0

AndroidでRectをスケーリングして画面全体に収まるようにしたい これまでのコードは次のとおりです。 public class MainView extends 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);」です。動作しません...これを行う方法についてのアイデアはありますか?

編集:私はこれを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 の通帳の新しいチケット アプリのようなものです。ありがとう!

4

2 に答える 2

1

何かをスケーリングしたい場合は、使用できますcanvas.scale(scaleFactor, scaleFactor);

最初の倍率は X 方向の倍率で、2 番目は Y 方向の倍率です。

アニメーションの部分については、このリンクをご覧ください。役立つかもしれません。

于 2012-07-05T18:51:10.200 に答える