android为imageview分配一个可绘制的动态视图
我有一个可绘制的数组,我想通过自己的计时器将其更改为imageview。 (我用xml和setBackgroundResource尝试了另一个选项,但不适用于我,因为我有数百张图片,总是出现内存问题,因为看起来android已经一次性为所有图片分配了全部内存。(在本演示中,我将其缩短为4张图片) 好的,首先我制作我的数组android为imageview分配一个可绘制的动态视图,android,Android,我有一个可绘制的数组,我想通过自己的计时器将其更改为imageview。 (我用xml和setBackgroundResource尝试了另一个选项,但不适用于我,因为我有数百张图片,总是出现内存问题,因为看起来android已经一次性为所有图片分配了全部内存。(在本演示中,我将其缩短为4张图片) 好的,首先我制作我的数组 private static int[] draws = { R.drawable.frankiearmevor_0001, R.drawable.fra
private static int[] draws = {
R.drawable.frankiearmevor_0001,
R.drawable.frankiearmevor_0002,
R.drawable.frankiearmevor_0003,
R.drawable.frankiearmevor_0002
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgView = (ImageView) findViewById(R.id.fredi);
// create timer
Timer updateProgressTimer = new Timer();
updateProgressTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
myloop();
}
}, 0, 150);
}
int mycounter;
public void myloop()
{
mycounter++;
if (mycounter > 4) mycounter = 1;
imgView.setImageResource(draws[mycounter-1]);
String hallo; hallo = "now: "+mycounter;
Log.d("1",hallo);
}
当我只分配一个固定图像时:imgView.setImageResource(draws[2]);
它显示的很好,我也看到我的线程记录的很好,但是当我交换
固定资源将[2]绘制为动态绘制[mycounter-1]…我只得到一个黑屏,没有错误,什么都没有
要做什么,所以我将显示图像:)
thx
克里斯
编辑:22。八月:
我现在试着用我得到的评论,它编译得很好,但不知怎的,我猜是有一个错误。。它崩溃了:
imgView = (ImageView) findViewById(R.id.fredi);
Timer updateProgressTimer = new Timer();
updateProgressTimer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
//myloop();
imgView.post (new Runnable()
{
public void run()
{
mycounter++;
if (mycounter > 10) mycounter = 1;
imgView.setImageResource(draws[1]);
//imgView.invalidate();
String hallo; hallo = "now: "+mycounter;
Log.d("1",hallo);
}
});
}
}, 0, 150);
ImageView
更新应该发生在UI线程上
参考答案。TimerTask
运行在不同的线程上,因此必须使用imgView.post()
来更新UI组件
是否确实需要每隔150ms
更新组件?那很贵
祝你好运。谢谢。。。我会试试。。。这是一部动画。。。因此,是的,我需要经常更新,以使其平滑