现在,我在主要活动中使用以下代码
imageAnim.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
float x = imageAnim.getX(); // width - activity's field
Log.d("works", "" + x); //return right value
}
});
但是我想将其移到一个类上,但是却不断出现类似
cannot resolve symbol getViewTreeObserver
的错误。有没有办法来解决这个问题? 最佳答案
您可以将imageAnim
作为构造函数可传递的参数传递给类
例如,创建一个名为ClassHelper
的类,如下所示:
public class ClassHelper {
private ImageView imageView;
private Context context;
private float x;
ClassHelper(ImageView imageView, Context context) {
this.context = context;
this.imageView = imageView;
}
void setViewTreeObserver() {
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
x = imageView.getX();
}
});
}
public float getX() {
return x;
}
}
并这样称呼它
ClassHelper classHelper = new ClassHelper(imageAnim,getApplicationContext());
classHelper.getViewTreeObserver();
//getX() method will return the value of X
Toast.makeText(this, "" + classHelper.getX(), Toast.LENGTH_SHORT).show();