我对当前的 Android 项目感到头疼。我想检测当前页面的变化。比如有一个TextView来显示设备时间,每秒更新一次。如何检测这种变化?我在 SO 上搜索了很多(谢谢 SO),但没有一个对我有用。
更多信息:我不使用标准活动来创建页面。我的方法是:所有小部件都创建到一个 View 对象中,然后用于创建一个容器对象。之后,我只处理这个容器以定期使用VSYNC回调Choreographer.FrameCallback在画布上绘制。
确实,它可以画画。一切正常。除了:我只想在页面内容更改时绘制画布。所以回到我开始的问题,如何检测这个“变化”的事件?我确信有某种回调来处理这个问题。我使用了以下解决方案,但是当 textview 的文本更改时不会调用onGlobalLayout 。
CanvasAppViewContainer container;//CanvasAppViewContainer extends AbsoluteLayout
LayoutInflater li =(LayoutInflater)getService().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = li.inflate(resourceId, null);//passed a correct the layout id
container = new CanvasAppViewContainer(getService(), view, getWidth(), getHeight(), getSurface());
rootView = (LinearLayout) findViewById(R.id.rootView); //root element of layout
rootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@SuppressLint("NewApi")
@Override
public void onGlobalLayout() {
Log.d("test", "onGlobalLayout");
}
});
顺便说一句:即使我为 textview 注册了视图树观察器,仍然没有调用 onGlobalLayout。
谢谢