buunrotate.java
package buunrotate.test;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.view.animation.RotateAnimation;
public class buunrotate extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView pin = (ImageView) findViewById(R.id.buun);
Button button_kmh = (Button) findViewById(R.id.button_do);
button_kmh.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText textnum = (EditText) findViewById(R.id.text_num);
float num = Integer.parseInt(textnum.getText().toString());
num = (float) (-45 + (num * (225.0/150.0)));
if(num > 180){
num = 190;
}
RotateAnimation rotate = new RotateAnimation(-45, num, 150, 0);
rotate.setDuration(1000);
pin.startAnimation(rotate);
}
});
}
}
アニメーションをやってみた
今までは2つの画面でやってた訳ですが、どうせなら一緒に出来た方が良いよねーって事で
一つの画面で文字入力、画像表示、アニメーションをやってみた
layoutが割と重要で、丸の部分をバックグラウンドに設定
その上にブーンの絵を乗せる事で一つの画面で実現出来た
あとアニメーションは
RotateAnimation rotate = new RotateAnimation(-45, num, 150, 0);
rotate.setDuration(1000);
pin.startAnimation(rotate);
これでばっちり
これでまぁ、出来るっちゃ出来るんだけど、どうせならもっと自由に画像を配置したい所。
どうやれば良いんですかねー
layout.xml
続きを読むbuun.java
package buunview.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
public class buun extends Activity{
private static float num;
private static int rotateX = 155;
private static int rotateY = 160;
private static Rect rect1;
private static Rect rect2;
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(new GraphicsView(this));
Bundle extras = getIntent().getExtras();
if(extras != null){
num = extras.getInt("Num");
}
}
static public class GraphicsView extends View{
private BitmapDrawable maru;
private BitmapDrawable buun;
public GraphicsView(Context context) {
super(context);
this.maru = (BitmapDrawable) context.getResources().getDrawable(R.drawable.maru);
rect1 = new Rect(0,5,this.maru.getIntrinsicWidth(), this.maru.getIntrinsicHeight());
this.maru.setBounds(rect1);
this.buun = (BitmapDrawable) context.getResources().getDrawable(R.drawable.buun);
rect2 = new Rect(2,100,this.buun.getIntrinsicWidth(), 200);
this.buun.setBounds(rect2);
}
@Override
public void draw(Canvas canvas){
this.maru.draw(canvas);
canvas.save();
canvas.rotate(num, rotateX, rotateY);
this.buun.draw(canvas);
canvas.restore();
}
}
}
main.java
package buunview.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class buunview extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button_do = (Button) findViewById(R.id.button_do);
button_kmh.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(buunview.this, buun.class);
EditText textnum = (EditText) findViewById(R.id.text_num);
intent.putExtra("Num", Integer.parseInt(textnum.getText().toString()));
startActivityForResult(intent, 0);
}
});
}
}
arcview.java
package arc.test; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.os.Bundle; import android.view.View; public class arcview extends Activity{ public static Paint cPaint; public static RectF rect; public static Path arc; public static Paint lPaint; public static float linex = 10; public static float liney = 200; public static double rad; public static Paint dPaint; private static float num; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(new GraphicsView(this)); Bundle extras = getIntent().getExtras(); if(extras != null){ num = extras.getInt("Num"); } } static public class GraphicsView extends View{ public GraphicsView(Context context){ super(context); } protected void onDraw(Canvas canvas){ cPaint = new Paint(); cPaint.setColor(Color.WHITE); dPaint = new Paint(); dPaint.setColor(Color.BLACK); rect = new RectF(25, 100, 225, 300); arc = new Path(); lPaint = new Paint(); lPaint.setColor(Color.RED); arc.arcTo(rect, 180, num); canvas.drawPath(arc, cPaint); canvas.drawLine(linex, liney, 125, 190, lPaint); } } }