我编写了以下代码,首先增加 ImageView 的大小,并在 100 毫秒后减小同一 ImageView 的大小。但是,此代码会增加 ImageView 的大小,但不会减小其大小,或者 100 毫秒延迟后的代码不会影响 imageView 尺寸。
我究竟做错了什么?
uiHandler.post(new Runnable()
{
@Override
public void run()
{
FrameLayout.LayoutParams layout = (android.widget.FrameLayout.LayoutParams) imageView.getLayoutParams();
layout.height = (int) (2*iconsSizeInDP);
layout.width = (int) (2*iconsSizeInDP);
imageView.setLayoutParams(layout);
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
// following code block doesnt'affect imageView dimensions
layout.height = (int) iconsSizeInDP;
layout.width = (int) iconsSizeInDP;
imageView.setLayoutParams(layout);
}
});
Regards
您在同一个 UI 线程中更改布局 2 次,因此只有最后一次更改才能生效。
您应该分成 2 个 UI 线程,如下所示:
uiHandler.post(new Runnable()
{
@Override
public void run()
{
FrameLayout.LayoutParams layout = (android.widget.FrameLayout.LayoutParams) imageView.getLayoutParams();
layout.height = (int) (2*iconsSizeInDP);
layout.width = (int) (2*iconsSizeInDP);
imageView.setLayoutParams(layout);
}
};
uiHandler.postDelayed(new Runnable()
{
@Override
public void run()
{
Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
// following code block doesnt'affect imageView dimensions
layout.height = (int) iconsSizeInDP;
layout.width = (int) iconsSizeInDP;
imageView.setLayoutParams(layout);
}
},50);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)