簡體   English   中英

無法弄清楚如何獲得相對布局的中心

[英]Cant figure out how to get center of relativelayout

在過去的兩個小時中,我一直在為此苦苦掙扎,而我只是無法獲得答案。 我想要我的相對布局的中心,因為我想使用畫布在那里畫一個圓。 我已經嘗試過的

  • ViewTreeObserver.OnGlobalLayoutListener
  • 的OnStart()

這是我的代碼:

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    Bitmap bg = Bitmap.createBitmap(480, 500, Bitmap.Config.ARGB_8888);
    canvas = new Canvas(bg); 
    rel = (RelativeLayout) findViewById(R.id.relPaint);
    //canvas.drawPaint(paint);
    paint.setColor(Color.parseColor("#CD5C5C"));
    canvas.drawCircle(centreX, centreY, 50, paint);
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
        rel.setBackgroundDrawable(new BitmapDrawable(getResources(), bg));
    } else {
        rel.setBackground(new BitmapDrawable(getResources(), bg));
    }
}

@Override
protected void onStart() {
    centreX = rel.getX() + rel.getWidth()  / 2;
    centreY = rel.getY() + rel.getHeight() / 2;
    super.onStart();
}

變量rel,centerX和centerY全局聲明。 謝謝。

看一下活動生命周期 onStart()之前onStart() onCreate() onStart() 首先要繪制圓,然后再計算布局的中心。 OnCreate()執行所有操作。

然后像這樣計算centreXcentreY

rel.post(new Runnable() { 
@Override
  public void run() {
    centreX = rel.getWidth() / 2;
    centreY = rel.getHeight() / 2;

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    Bitmap bg = Bitmap.createBitmap(480, 500, Bitmap.Config.ARGB_8888);
    canvas = new Canvas(bg); 
    rel = (RelativeLayout) findViewById(R.id.relPaint);
    //canvas.drawPaint(paint);
    paint.setColor(Color.parseColor("#CD5C5C"));
    canvas.drawCircle(centreX, centreY, 50, paint);
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
      rel.setBackgroundDrawable(new BitmapDrawable(getResources(), bg));
    } else {
      rel.setBackground(new BitmapDrawable(getResources(), bg));
    }
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM