1. 程式人生 > >Android 控制元件未渲染完成操作控制元件錯誤解決方案

Android 控制元件未渲染完成操作控制元件錯誤解決方案

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); } } }