我有以下问题:我的应用程序中有一个图像,位置将动态更改。以下代码已经有效:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
image.setLayoutParams(layoutParams);
image.setPadding(startX, startY, 0, 0);
image.setVisibility(View.VISIBLE);
for (int i=0; i<10; i++) {
startX+=10;
image.setPadding(startX, startY, 0, 0);
try {
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
问题是,图像位置立即变为最终位置,所以我添加了Thread.sleep行。但是,现在线程休眠10x 3s然后图像变为最终位置。我也试过在一个新的线程中做到这一点,但也没有用。
有关如何实现目标的任何想法?我很高兴任何解决方案或输入。
答案 0 :(得分:0)
您可以使用Handler
和Runnable
的组合来实现此行为:
第1步:定义Handler和Runnable
Handler handler = new Handler();
Runnable refreshRunnable = new Runnable() {
@Override
public void run() {
refreshView();
}
}
第2步:这是你的refreshView函数:
private void refreshView() {
count ++; //Variable initialized at 0 in your class
if (count < 10) {
startX += 10;
dotGreen.setPadding(startX, startY, 0, 0);
dotGreen.invalidate();
handler.postDelayed(refreshRunnable, 1000);
}
}