我正在尝试使用Runnable
和Handler.postDelayed
为ImageView设置动画。位图操作都可以正常工作但不是动画我得到了ImageView的最终结果。这里有什么问题?
final ImageView imageView = (ImageView) findViewById(R.id.imageView);
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.clock_flip_top);
final Matrix matrix = new Matrix();
for (i = 0; i < 30; i++) {
float c = i/5;
src = new float[] { 0, 0, bitmap.getWidth(), 0,
bitmap.getWidth(), bitmap.getHeight(), 0,
bitmap.getHeight() };
dst = new float[] { 0 - c, 0, bitmap.getWidth() + c, 0,
bitmap.getWidth(), bitmap.getHeight(), 0,
bitmap.getHeight() };
anim = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
matrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1);
Bitmap newBitmap = Bitmap
.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
imageView.setImageBitmap(newBitmap);
handler.postDelayed(anim, i * 200);
}
};
anim.run();
}
答案 0 :(得分:0)
您不会致电run()
。要让Runnable对象在另一个线程中运行,必须创建一个Thread对象,将构造函数中的Runnable对象传递给Thread对象。然后在线程对象上调用start()
。有关如何启动线程的详细说明,请参阅here。