2012-07-05 54 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);