私はさまざまな車を表示するアプリで作業しており、ユーザーは車を選択する必要があります。次を押すと、車が画面の外に出て、新しい車が入ってきます。
私のリソースは次のとおりです。
- 車体
- 車のホイール
(車が動くと車輪を回転させる必要があるので、それらを分離する必要があります)
私は避けたかったAbsoluteLayout
ので、CarView
`RelativeLayout. コードは次のとおりです。
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);
}
}
基本的に私がやっていることは、車のボディを配置してから、パディングを使用してホイールを配置することです.
このAndroid 開発者のスレッドを読んだ後RotateAnimation
、ホイールを奇妙な動きにするパディングを含むビュー全体を回転させることに気付きました。
これを修正するにはどうすればよいですか? パッドを使用する代わりに車輪を配置するより良い方法を考えられますImageView
か?
私が抱えているもう1つの問題は、特定の時点で車輪の動きを止めたいということですが、cancel()メソッドはAnimation
Since: API Level 8であり、これを1.5で動作させる必要があります。回転を止めるにはどうすればよいですか?