如何在android中缩放rect?

时间:2012-07-05 18:22:54

标签: java android

我希望能够在Android上扩展一个Rect,以便它适合整个屏幕,这是我的代码到目前为止:      公共类MainView扩展了View {

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(anim);”不起作用......关于如何做到这一点的任何想法?

编辑:我也将此作为我的动画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>

我想要实现的效果就像存折Apple的新票应用,以防你更好地了解如何做到这一点。谢谢!

2 个答案:

答案 0 :(得分:2)

首先选择屏幕尺寸

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

答案 1 :(得分:1)

如果您想缩放某些内容,可以使用canvas.scale(scaleFactor, scaleFactor);

第一个比例因子是您想要在X中缩放的数量,第二个比例因子是Y中的数量。

对于动画部分,请查看此link,也许它可以提供帮助。