English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Этот пример рассказывает о методе реализации большой картинки с скроллингом в Android. Делимся с вами для вашего参考, подробности см. ниже:
Вопрос:
У меня есть изображение большого размера, например, длина и ширина в два раза больше экрана, функция, которую я хочу реализовать, это в первую очередь выровнять изображение по центру, поскольку изображение слишком большое, очевидно, можно показать только часть, а затем можно реализовать平滑滚动 (с滚动的 обновлением без видимых следов обновления).
Как и в google карте, если использовать контрол mapView, то можно перемещать весь карту на экране, но из-за большого объема информации на карте, если слишком быстро перемещать, экран временно покажет некоторые следы обновления (серые и белые клетки).
Хотел использовать mapView для загрузки существующего изображения, но не удалось, затем также использовал控件 ScrollView и наиболее используемый imageView, но все равно не удалось.
Решение:
После большого количества поиска информации, использование imageView вместе с событием onTouch, может решить проблему.
Ключевые коды:
У контроле imageView в файле макета так
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" android:scaleType="center" android:background="#fff" android:src="@drawable/picName" />
Основной код в файле Activity следующий
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xml_name_layout); final ImageView switcherView = (ImageView) this.findViewById(R.id.img); switcherView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View arg0, MotionEvent event) { float curX, curY; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mx = event.getX(); my = event.getY(); break; case MotionEvent.ACTION_MOVE: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); mx = curX; my = curY; break; case MotionEvent.ACTION_UP: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); break; {} return true; {} }); {}
Реализованный эффект показан следующим образом:
Оригинальное изображение:
Эффект в симуляторе:
Читатели, интересующиеся дополнительной информацией по теме Android, могут просмотреть专题 статьи на нашем сайте: «Суммарные советы по обработке графики и изображений в Android», «Введение и продвинутый курс по разработке Android», «Сборник советов по отладке и решению распространенных проблем в Android», «Сборник советов по работе с多媒体 в Android (аудио, видео, запись и т.д.)», «Суммарные советы по использованию основных компонентов в Android», «Суммарные советы по использованию View в Android», «Суммарные советы по использованию layout в Android» и «Суммарные советы по использованию контроллеров в Android»
Надеюсь, что изложенное в этой статье поможет вам в разработке Android-приложений.
Заявление: Контент статьи предоставлен из Интернета, авторские права принадлежат их законным владельцам, материал предоставлен пользователями Интернета, веб-сайт не имеет права собственности, материал не был отредактирован вручную, и не несет ответственности за него. Если вы обнаружите материалы,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. В случае подтверждения нарушения, сайт немедленно удаляет涉嫌侵权的内容.