2012-07-05 56 views
1

我希望能夠擴展一個矩形在Android上,使其適合整個屏幕,這是我到目前爲止的代碼: 公共類的MainView擴展視圖{如何在android中縮放矩形?

private Main main; 
private Rect facebook_rect; 

public MainView(Context context){ 
    super(context); 
    this.main = (Main) context; 
    setFocusable(true); 
    setFocusableInTouchMode(true); 
} 

@Override 
protected void onDraw(Canvas canvas){ 
    Paint background = new Paint(); 
    background.setColor(getResources().getColor(R.color.main_background)); 
    canvas.drawRect(0, 0, getWidth(), getHeight(), background); 

    Paint facebookPaint = new Paint(); 
    facebook_rect = new Rect(0,0,getWidth(),getHeight()/5); 
    facebookPaint.setColor(getResources().getColor(R.color.facebook_color)); 
    canvas.drawRect(facebook_rect,facebookPaint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    if(event.getAction()!=MotionEvent.ACTION_DOWN) 
     return super.onTouchEvent(event); 
    animate("facebook"); 

    return true; 
} 

private void animate(String string) { 
    Animation anim = AnimationUtils.loadAnimation(main, R.anim.scale_anim_1stpos); 
    facebook_rect.startAnimation(anim); 

} 
} 

但是這樣的:「facebook_rect.startAnimation(阿尼姆) ;」不工作...有關如何做到這一點的任何想法?

編輯:我也有這個作爲我的動畫XML文件

<?xml version="1.0" encoding="utf-8"?> 
<scale xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromYScale="1.0" android:toYScale="3.0" 
     android:pivotX="0" 
     android:pivotY="0" 
     android:interpolator="@android:anim/linear_interpolator" 
     android:duration="700" android:fillAfter="true" > 
</scale> 

我想要達到的效果是一樣的東西存摺蘋果的新票的應用程序,以防萬一你有更好的想法如何做到這一點。謝謝!

回答

1

如果你想擴展東西,你可以使用canvas.scale(scaleFactor, scaleFactor);

第一個比例因子是要在X縮放量,並在Y.

第二量爲動畫部分取看看這個link,也許它可以幫助。

2

先取sceeen尺寸

DisplayMetrics displayMetrics = new DisplayMetrics();  
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

下一頁找到比例因子

float scale = displayMetrics.densityDpi; 

下一頁規模畫布使用繪製函數

canvas.drawRect(left-20*scale, top-20*scale, right+20*scale, bottom, mPaint);