当我使用画廊插件上,如何获取图像说的扩展发光被选中和按比例缩小的&的未辉光在被未选

我见过的所有教程有这种效果,但我没能看到它... ...

是否有某种类型的动画,我必须重视的图片

有帮助吗?

解决方案

希望这是有帮助的。我设法“模拟”与Gallery插件的收缩/成长的解决方案。由于他们删除getScale(),事情变得有点复杂。我认为这是不是最好的解决办法可言,但至少我可以住在一起。

我发现的是,Gallery管理的焦点极其恶劣。因此,第一种方法是添加上显示的ImageView的焦点变化监听器,但没有运气。福克斯是一个烂摊子那里......在这方面,所选择的图像这不是当前焦点视图。我发出邮件到Android的开发者邮件有关API文档的一些错误列表(关于focusSearch()method有的侧重contants)。

下面是我解决这个问题:

构建动画资源为“成长”的图像:

<?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 /阿尼姆DIR)

您可以遵循资源指南这里以创建Gallery图。该ImageAdapter建立每次在ImageView对象调用Gallery时间getView()。你可以实现一种解决方法是增加一个线到getView()方法识别与View一个position,这样:

...
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");

    }
    });

请注意:您可能会注意到,从动画和布局参数所有的值已经在我手上了choosen。这是因为我不打算清理代码为您服务。而且,这仅仅是一个解决办法与这个小部件或Android设备上查看系统的BAD焦点问题。如果焦点都行,那么,所有你需要做的是设置一个焦点变化监听器,使格罗斯/收缩当它得到了集中/聚焦。

我希望这可以帮助你找到解决你的问题的一种方式,

此致

新编辑:这是我已经设置该侦听器,我还添加了行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) {
    }
}

其他提示

我实现了一个类似的动画像这样:

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

    });
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top