强制布局刷新/重绘android?

You*_*che 6 layout android refresh

我想改变布局的位置,75ms后将其返回到第一个位置进行移动,这是我的代码:

for(int i = 0; i < l1.getChildCount(); i++) {  
    linear = (LinearLayout) findViewById(l1.getChildAt(i).getId());  
    LayoutParams params = new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);  
    params.bottomMargin = 10;  
    linear.setLayoutParams(params);  
    SystemClock.sleep(75);
}   
Run Code Online (Sandbox Code Playgroud)

问题是应用程序停止750毫秒,并没有做任何事情.我试过 invalidate(),refreshDrawableState(),requestLayout(), postInvalidate(),并尝试调用onResume(),onRestart(),onPause().

Ped*_*aço 17

也许你需要:

linear.invalidate();
linear.requestLayout();
Run Code Online (Sandbox Code Playgroud)

在进行布局更改后.

编辑:

在不同的线程上运行代码:

new Thread() {
    @Override
    public void run() {
        <your code here>
    }
}.start();
Run Code Online (Sandbox Code Playgroud)

每当您需要从该线程更新UI时,请使用:

activity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        <code to change UI>
    }
});
Run Code Online (Sandbox Code Playgroud)