Android 控制元件未渲染完成操作控制元件錯誤解決方案
阿新 • • 發佈:2019-02-01
android控制元件未渲染完成就對控制元件操作容易出現bug。
比如下拉重新整理控制元件,當頁面一開啟的時候就現在正在重新整理效果,常用的做法是寫一個定時器延時600毫秒左右。但是在不同裝置,不同android 版本,甚至於在同一裝置每次渲染控制元件所需要的時間都是不一樣的。那個定時器設定一個定時引數的做法明顯欠妥。
下面我提供一個解決方案,思路如下:
1.定義一個引數用於標記控制元件是否完成首次載入,為控制元件設定監聽控制元件渲染完成事件,當控制元件載入完成是,設定標記引數已經渲染完成。
2.寫一個函式,根據表示引數判斷控制元件是否載入完成,如果載入完成執行功能。反之寫一個定時器延時遞迴函式本身。
示例程式碼
public class MainActivity extends Activity {
private View view = null;
private boolean isRender = false;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
// view載入完成時回撥
// view=findViewById(R.id.view);
view.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
isRender = true;
}
});
doSomeThing();
}
private void doSomeThing() {
if (isRender) {
view.setTranslationX(-1000 );
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doSomeThing();
}
}, 200);
}
}
}