Android: анимация в галерее?
когда я использую виджет Галерея, Как я могу получить изображения, чтобы сказать масштабирование & зарево при выборе и уменьшается & un-glow на невыбранные?
все учебники, которые я видел, имеют этот эффект, но я не могу его увидеть...
есть какой-то анимация что я должен прикрепить к Галерея?
3 ответов
надеюсь, это полезно. Мне удается "имитировать" решение shrink/grow с помощью Gallery
виджет. Так как они удалили getScale()
, все становится немного сложнее. Я думаю, что это не лучшее решение, но, по крайней мере, я могу жить с этим.
что я нашел это Gallery
управляет фокусом очень плохо. Итак, первый подход состоял в том, чтобы добавить слушателя изменения фокуса на ImageView
отображается, но не повезло там. Фокус-это беспорядок... в терминах этого, выбранное изображение это не сфокусированное изображение. Я отправил письмо в список рассылки android-разработчиков о какой-то ошибке в API doc (относительно 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"/>
если вы не понимаете, что это значит, то вы должны перейти к чтению этой
это будет наш эффект "роста", и вам понадобится чтобы сохранить его в: res/anim/grow.xml
или любое имя, которое вам подходит (но всегда в res / anim dir).
вы можете следовать руководству по ресурсам из здесь создать Gallery
вид. The ImageAdapter
строит ImageView
каждый раз
вам нужно использовать ImageSwitcher. ImageSwitcher имеет методы для установки анимации входа и выхода (когда изображение выбрано и отменено или выбрано и заменено).
на следующей ссылке есть хороший учебник о том, как использовать его в сочетании с галереей.
я реализовал подобную анимацию такой:
final Animation shrink = AnimationUtils.loadAnimation(activity, R.anim.shrink);
shrink.setFillAfter(true);
gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// This iterates through the views which are currently displayed on screen.
for (int k=0; k<gallery.getChildCount(); k++){
// Do whatever else you want, here.
// This is how you get a particular element of a view
ImageView background = (ImageView) gallery.getChildAt(k).findViewById(R.id.menu_item_background);
//clear animation
gallery.getChildAt(k).clearAnimation();
}
// Scale the selected one
view.startAnimation(shrink);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {}
});