我的Activity
包含Gallery
视图。我在onItemSelectedListener
上定义了Gallery
,因此无论何时选择项目,我都会将缩放动画应用于当前选定的视图。除了一个问题之外,监听器和扩展的工作方式与预期相同。
当我定义图库时,我设置了spacing
属性,但是,在缩放视图后,间距未正确设置。请参阅下图作为问题的示例。
有关如何保持适当间距的任何想法?
以下是代码片段:
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
}
}
答案 0 :(得分:1)
在Android中查看动画是一个主要的PITA。当视图必须“移动其他视图”时,它几乎不会正常工作。有时使用fill_after参数,视图将不再响应触摸事件。天知道为什么。
我会给你两个次优选项:
不要将前视图放大,而应缩小侧视图。空间将会增长,这可能比你现在拥有的更具吸引力
删除fill_after,然后使用AnimationListener并使用animationEnd中的LayouParameters设置视图大小。