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) {}

    });