Единственное основное различие, о котором я знаю, - то, что, так как Вы не используете реальный класс, встраивание (очень?) тяжелее, чтобы сделать.
Надеюсь, это будет полезно. Мне удалось «смоделировать» решение для сжатия / увеличения с помощью виджета Gallery
. Поскольку они удалили getScale ()
, все стало немного сложнее. Я думаю, что это совсем не лучшее решение, но, по крайней мере, я могу с этим жить.
Я обнаружил, что Галерея
ЧРЕЗВЫЧАЙНО ПЛОХО управляет фокусом. Итак, первый подход заключался в добавлении слушателя смены фокуса в отображаемый ImageView
, но безуспешно. Фокус - это МЕССИЯ ... в том смысле, что выбранное изображение не является текущим сфокусированным видом. Я отправил письмо в список рассылки разработчиков Android о некоторой ошибке в документации по API (в отношении метода focusSearch ()
и некоторых контентов фокуса).
Вот мое решение этой проблемы:
Создайте ресурс анимации для «увеличения» изображения:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:toXScale="1.10"
android:fromYScale="1.0"
android:toYScale="1.10"
android:duration="300"
android:pivotX="50%"
android:pivotY="50%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fillAfter="false"/>
Если вы не понимаете, что это означает, вам следует продолжить чтение this
That будет нашим эффектом «роста», и вам нужно будет сохранить его в: res / anim / grow.xml
или под любым другим именем, которое вам подходит (но всегда в каталоге res / anim).
Вы можете следовать руководству по ресурсам из здесь , чтобы создать представление Галерея
. ImageAdapter
создает ImageView
каждый раз, когда объект Gallery
вызывает getView ()
. Одно из решений, которое вы можете реализовать, - это добавить строку к методу getView ()
, которая идентифицирует View
с позицией
, следующим образом:
...
i.setId(position);
...
С этой строкой добавлен к методу getView ()
объекта ImageAdpater
, вы можете однозначно идентифицировать это представление в слушателе, например:
g.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected (AdapterView<?> parent, View v, int position, long id) {
Animation grow = AnimationUtils.loadAnimation(YourActivity.this, R.anim.grow);
View sideView = parent.findViewById(position - 1);
if (sideView != null)
((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(150, 100));
sideView = parent.findViewById(position + 1);
if (sideView != null)
((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(150, 100));
v.startAnimation(grow);
v.setLayoutParams(new Gallery.LayoutParams(170, 150));
}
public void onNothingSelected (AdapterView<?> parent) {
System.out.println("NOTHING SELECTED");
}
});
ПРИМЕЧАНИЕ. Вы можете заметить, что все значения из анимации и из параметров макета был выбран мной под рукой. Это потому, что я не собираюсь чистить код за вас. И это всего лишь временное решение проблемы с ПЛОХОЙ фокусировкой с этим виджетом или системой просмотра Android. Если фокус был в порядке, тогда все, что вам нужно сделать, это установить прослушиватель смены фокуса, который заставляет большой / уменьшаться, когда он получает фокус / расфокусировку.
Надеюсь, это поможет вам найти способ решения вашей проблемы,
С уважением,
Новое РЕДАКТИРОВАНИЕ: Это прослушиватель, который я установил, я также добавил строку i.clearAnimation ()
в методе getView ()
:
private class SelectListener implements AdapterView.OnItemSelectedListener {
private Animation grow;
private int last;
public SelectListener() {
grow = AnimationUtils.loadAnimation(RouteGallery.this, R.anim.grow);
last = 0;
}
public void onItemSelected (AdapterView<?> parent, View v, int position, long id) {
View sideView = parent.findViewById(last);
if (sideView != null && last != position)
sideView.clearAnimation();
v.startAnimation(grow);
last = position;
}
public void onNothingSelected (AdapterView<?> parent) {
}
}
Вам необходимо использовать ImageSwitcher. ImageSwitcher имеет методы для установки анимации входа и выхода (когда изображение выбрано и не выбрано, либо выбрано и заменено).
По ссылке , следующей за , есть хорошее руководство о том, как использовать его в сочетании с Галерея.