现在,我在主要活动中使用以下代码

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

09-10 03:15
查看更多