Android Gallery Scale Center Image&间距问题

时间:2012-01-24 13:59:35

标签: android

我的Activity包含Gallery视图。我在onItemSelectedListener上定义了Gallery,因此无论何时选择项目,我都会将缩放动画应用于当前选定的视图。除了一个问题之外,监听器和扩展的工作方式与预期相同。

当我定义图库时,我设置了spacing属性,但是,在缩放视图后,间距未正确设置。请参阅下图作为问题的示例。

有关如何保持适当间距的任何想法?

enter image description here

以下是代码片段:

main.xml中

<Gallery
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/featured_gallery"
    android:layout_width="1355px"
    android:layout_height="490px"
    android:layout_gravity="center"
    android:spacing="5px"
    android:layout_marginTop="70dp"
     />    

feature_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXScale="1.0"
   android:toXScale="1.075"
   android:fromYScale="1.0"
   android:toYScale="1.075"
   android:duration="100"
   android:pivotX="50%"
   android:pivotY="50%"

   android:interpolator="@android:anim/accelerate_decelerate_interpolator"
   android:fillAfter="true"> 
</scale>

onItemSelectListener

private class FeaturedSelectListener implements AdapterView.OnItemSelectedListener {

    private Animation grow = null;
    private View lastView = null;

    public FeaturedSelectListener(Context c) {
        grow = AnimationUtils.loadAnimation(c, R.anim.featured_selected);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // Shrink the view that was zoomed
        try {
            if (null != lastView)
                lastView.clearAnimation();
        } catch (Exception clear) {
        }

        // Zoom the new selected view
        try {
            view.startAnimation(grow);
        } catch (Exception animate) {
        }

        // Set the last view so we can clear the animation
        lastView = view;

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

}

1 个答案:

答案 0 :(得分:1)

在Android中查看动画是一个主要的PITA。当视图必须“移动其他视图”时,它几乎不会正常工作。有时使用fill_after参数,视图将不再响应触摸事件。天知道为什么。

我会给你两个次优选项:

  1. 不要将前视图放大,而应缩小侧视图。空间将会增长,这可能比你现在拥有的更具吸引力

  2. 删除fill_after,然后使用AnimationListener并使用animationEnd中的LayouParameters设置视图大小。

  3. 祝你好运。