12x3 격자로 배열 된 12 개의 요소가있는 GridView가 있습니다. 각 요소는 ImageView와 그 아래 TextView를 포함하는 grid_item.xml이라는 레이아웃입니다. 처음에는 ImageView가 타일 이미지입니다. GridView 요소 중 하나를 클릭하거나 터치하면 ImageView에 애니메이션이 적용되어 이미지 뷰를 축소하고 TextView를 아래에 나타냅니다.Android Gridview 애니메이션이 최종 항목에서 작동하지 않습니다.
이 모든 것은 GridView의 마지막 (오른쪽 하단) 요소를 제외하고는 모두 잘 작동합니다. (안드로이드 에뮬레이터에서, 장치에서 테스트하지 않은) 그것을 클릭하면 클릭 이벤트 (grid_click)가 호출되지만 "onAnimationStart"리스너는 호출되지 않습니다. 은 다른 GridView 요소를 클릭 할 때이 호출됩니다.). 내가 어떤 다른 요소를 클릭하면
TEST 시작 애니메이션이
그러나 애니메이션이 잘 작동하고
: 나는 어떤 애니메이션이 없다 우측 하단의 GridView 요소를 클릭하고 내가 로그 캣에서 볼 즉, 로그 캣에서 나는 참조 :
테스트 시작 애니메이션
TEST
로그 캣 미상
onAnimationStart 문제를 나타 내기 위해 다른 것을 출력하지 마십시오. 누구든지 이것을 이해하려고 노력하면서 며칠을 보냈다. 여기<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:pivotX="50%" android:pivotY="50%" android:fromXScale="1" android:fromYScale="1" android:toXScale="0" android:toYScale="0" android:duration="250" />
<rotate android:fromDegrees="0" android:toDegrees="180" android:pivotX="50%" android:pivotY="50%" android:duration="250" />
</set>
가의 GridView의 각 항목에 대해 레이아웃이다,라는 grid_item.xml :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/grid_item_image"
android:src="@drawable/tile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/grid_item_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textStyle="bold"
android:textSize="17sp"
android:shadowColor="#555555"
android:shadowDx="1.0"
android:shadowDy="1.0"
android:shadowRadius="1.5"
/>
</FrameLayout>
다음
private void init_gridview()
{
setContentView(R.layout.game);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setNumColumns(3);
gridview.setColumnWidth(32);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
grid_click(position,v);
}
});
}
public class ImageAdapter extends BaseAdapter
{
private Context mContext;
public ImageAdapter(Context c)
{
mContext = c;
}
public int getCount()
{
return(3*4);
}
public Object getItem(int position)
{
return null;
}
public long getItemId(int position)
{
return 0;
}
// inflate grid_item.xml and return a View combining textview and imageview
public View getView(int position, View convertView, ViewGroup parent)
{
View MyView = convertView;
if (convertView == null)
{
LayoutInflater li = getLayoutInflater();
MyView = li.inflate(R.layout.grid_item, null);
}
else
{
MyView=convertView;
}
TextView tv = (TextView)MyView.findViewById(R.id.grid_item_text);
tv.setText("something");
ImageView iv = (ImageView)MyView.findViewById(R.id.grid_item_image);
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setPadding(0,0,0,0);
iv.setImageResource(R.drawable.tile);
MyView.setLayoutParams(new GridView.LayoutParams(32,32));
return(MyView);
}
}
private void grid_click(int position, View v)
{
View clicked_view=v;
Animation scale_down = AnimationUtils.loadAnimation(this, R.anim.scale_down);
scale_down.setAnimationListener(new AnimationListener()
{
public void onAnimationStart(Animation animation)
{
Log.i("TEST","onAnimationStart");
}
public void onAnimationEnd(Animation animation)
{
}
public void onAnimationRepeat(Animation animation) {}
});
Log.i("TEST","start animation");
ImageView iv2 = (ImageView)clicked_view.findViewById(R.id.grid_item_image);
iv2.startAnimation(scale_down);
}
가 scale_down.xml 애니메이션입니다 다음과 같이 내 코드는
마지막으로 game.xml이라는 GridView가 포함 된 메인 레이아웃 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="vertical"
android:gravity="center"
android:background="@android:color/white">
<GridView
android:id="@+id/gridview"
android:background="@android:color/white"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="106dp"
android:numColumns="auto_fit"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="none"
android:gravity="center"
android:listSelector="@android:color/transparent"
/>
</LinearLayout>
gridview에 대한 높이와 레이아웃 wrap_content 사용하지 결코
android:layout_height="wrap_content"
android:layout_height="fill_parent"
행의 gridview에서 10