2016-11-17 54 views
0

我的程序是動畫imageView。這個圖像應該在屏幕的中心。問題是,圖像不在中心。我試圖做到這一點android - 圖像對齊錯誤

if (x<0) { 
        x = this.getWidth()/2; 
        y = this.getHeight()/2; 
       } 

但該方案並沒有給予青睞的結果。這是否是以它爲中心的錯誤方式,或者出了什麼問題?

public class AnimatedView extends ImageView{ 

    private Context mContext; 
    int x = -1; 
    int y = -1; 
    private int xVelocity = 10; 
    private int yVelocity = 5; 
    private Handler h; 
    private final int FRAME_RATE = 30; 
    boolean continueAnimation = true; 
    private ImageView imageView; 


    private BitmapDrawable ball; 
    public AnimatedView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mContext = context; 
     h = new Handler(); 
     imageView = (ImageView) findViewById(R.id.imageview1); 


     } 

    private Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      if(continueAnimation) { 
      invalidate(); 
      } 
     } 
    }; 

    protected void onDraw(Canvas c) { 

       ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ballrot); 
       if (x<0) { 
        x = this.getWidth()/2; 
        y = this.getHeight()/2; 
       } 

        else { 
         x += xVelocity; 

          if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) { 
           boolean continueAnimation = false; 
          } 
        } 

       c.drawBitmap(ball.getBitmap(), x, y, null); 

       if(continueAnimation) 
       { 
        h.postDelayed(r, FRAME_RATE); 
       } 

       else { 
         x = this.getWidth()-ball.getBitmap().getWidth(); 
       } 

      } 
} 

回答

0

要以編程方式計算中心位置,您需要知道要居中的對象的大小以及對象所在的容器的大小。

centerx = container.getWidth()/2 - obj.getWidth()/2; 
centery = container.getHeight()/2 - obj.getHeight()/2; 

隨着你使用對象

+0

的左上位置的假設難道我沒有這樣做的if語句? X是圖像對象的位置,this.getWidth()以像素爲單位返回我的視圖的寬度。跟高度一樣 –

+0

不,他們不一樣。 –

+0

以什麼方式?我在這種特殊情況下需要如何做到這一點? –