我希望能够在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的新票应用,以防你更好地了解如何做到这一点。谢谢!
答案 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,也许它可以提供帮助。