私は別の車を表示し、ユーザーが1つを選択する必要があるアプリで働いています。 。あなたは、次に押すと車画面の外に移動し、新しいものが入って来カーアニメーション回転ホイール
は私のリソースは次のとおりです。
- 車のボディ
- 車のホイール
(私はそれらを必要とします車が動いたときに車輪を回転させる必要があるので離すこと)
私はAbsoluteLayout
を避けたかったので、私のCarView
は `RelativeLayでる。コード:
public class CarView extends RelativeLayout {
private ImageView mBody;
private ImageView mLeftWheel;
private ImageView mRightWheel;
private float mScale;
public CarView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CarView(Context context) {
super(context);
}
public void initView(Car car) {
mScale = getContext().getResources().getDisplayMetrics().density;
Context ctx = getContext();
RelativeLayout.LayoutParams params;
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mBody = new ImageView(ctx);
mBody.setLayoutParams(params);
mBody.setImageResource(R.drawable.car_body);
addView(mBody);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mLeftWheel = new ImageView(ctx);
mLeftWheel.setLayoutParams(params);
mLeftWheel.setImageResource(R.drawable.car_wheel);
mLeftWheel.setPadding(0, dpToPx(79), dpToPx(188), 0);
addView(mLeftWheel);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mRightWheel = new ImageView(ctx);
mRightWheel.setLayoutParams(params);
mRightWheel.setImageResource(R.drawable.car_wheel);
mRightWheel.setPadding(dpToPx(203), dpToPx(75), 0, 0);
addView(mRightWheel);
}
public void startMoving() {
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setInterpolator(new LinearInterpolator());
rotateAnimation.setDuration(900L);
rotateAnimation.setRepeatCount(Animation.INFINITE);
mLeftWheel.startAnimation(rotateAnimation);
mRightWheel.startAnimation(rotateAnimation);
}
private int dpToPx(float dp) {
return (int) (dp * mScale + 0.5f);
}
}
基本的に私がやっていることは、車のボディを置き、車輪を置くためにパッドを使用することです。
thisアンドロイドデベロッパーのスレッドを読んだ後、私はRotateAnimation
がパッディングを含む全体像を回転させて、車輪を何か変な動きをさせることに気付きました。
これはどのように修正する必要がありますか? パディングを使用する代わりに、車輪を置くためのより良い方法を考えてもいいですか?ImageView
?
もう1つの問題は、特定の点でホイールの動きを止めたいのですが、のAnimation
にあります。APIレベル8と1.5で動作するようにする必要があります。どのように回転を停止する必要がありますか?
私はこれをテストしました。APIが言うように、余白が回転しないことを確認できます。「この領域はこのビューの範囲外です。」 ([ViewGroup.MarginLayoutParams](http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html)) – st4r0pr4m