Android动画

Vah*_*yan 2 animation android

我为Android编写了一个suduko游戏,如果用户插入了错误的数字,则想要设置平铺动画.但我不知道怎么做?问题在于,我有一个巨大的矩形壁覆盖孔屏幕,并将这个矩形分布在瓷砖中,只需绘制线条即可.而现在我无法想象如何制作瓷砖动画.

我可以解释我的问题.

抱歉英语不好,请回答)

Xav*_*Gil 7

你不应该那样画你的董事会.我建议将一个tile作为View的子类实现,这样你就可以单独为每个tile设置动画.

试试看动画是如何工作的:

瓷砖类

public class Tile extends View {

private RectF mRect;
private Paint mPaint;

public Tile(Context context) {
        super(context);
        init();
}

public Tile(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
}

public Tile(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
}

private void init(){
        mRect  = new RectF(0, 0, 100, 100);
        mPaint = new Paint();
        mPaint.setStyle( Paint.Style.STROKE );
        mPaint.setColor( Color.BLUE );
}

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawRect(mRect, mPaint);
    }
}
Run Code Online (Sandbox Code Playgroud)

主要活动

public class MainActivity extends Activity implements OnClickListener {

private Tile mTile;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout( this );
        layout.setBackgroundColor( Color.WHITE );
        layout.setPadding(50, 50, 50, 50);

        Button btn = new Button( this );
        btn.setText( "Click Me" );
        btn.setOnClickListener( this );
        layout.addView( btn );

        mTile = new Tile( this );
        layout.addView( mTile );

        setContentView( layout );
    }

@Override
public void onClick(View v) {
    Animation scaleAnim = AnimationUtils.loadAnimation(this, R.anim.scale);
    mTile.startAnimation( scaleAnim );      
}
}
Run Code Online (Sandbox Code Playgroud)

动画定义(此文件应命名scale.xml并放在目录下/res/anim)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="2.0"
        android:fromYScale="1.0"
        android:toYScale="2.0"
        android:fillAfter="false"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:duration="700" />
</set>
Run Code Online (Sandbox Code Playgroud)

在此处了解有关动画的更多信息.要制作自己的动画,请点击此处.

希望这可以让你继续前进.