アプリで使うデータベースを考える

どうしたら良いんだろう?
例えばA,B,Cと3つで1グループのデータがあるんですよ。
それをアクティビティ1で選択して2で表示して3で使う。
凄く分かりにくいけど雰囲気的にはこんな感じ。
これを実現するのに多次元配列でデータを渡していくのが良いのか、SQLite使ってデータベースに格納するのが良いのか、ファイル用意して読み込んだら良いのか……
どれが良いんですかね?
とりあえずSQLiteが若干重いとは聞いてるんですが、どれほど重いのかもまだ分かんないし……

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);
}
});

}
}

画像を表示してみる。しかも重ねて!!

割と画像重ねる方法が探してもなかった気がするんでメモ
今回も角度を指定して、その分画像を回転させてみた
使用した画像はこれ
背景は赤い丸
実装されてない逆回転ボタンもセット

canvas使えば画像同士も重ねる事が出来るっぽい
正直良く分かってないです
画像を回転させるここが割と重要やった
canvas.save();
canvas.rotate(num, rotateX, rotateY);
this.buun.draw(canvas);
canvas.restore();


layout.xml

続きを読む

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);
    	}
    }
}