みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Android用ゲームを作っています。

現在Androidゲームを作っているのですが、現在時間を取得し、時刻を表示したり、背景画像などを変えたりしたいのですがどのように取得し、表示させればいいのでしょうか?ソースコードは
・MainActivity.java
package andorid.eample.game2;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.os.Bundle;
import android.app.Activity;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout l = new LinearLayout(this);
setContentView(l);
l.addView(new PView(this, null, 0));
}
}

・PView.java

package andorid.eample.game2;

import android.annotation.SuppressLint;4
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import android.content.res.Resources;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.text.format.Time;
import android.media.MediaPlayer;


public class PView extends View{
Paint paint = new Paint();
Date date = new Date();

int flg = 0;
int charaX =250;
int charaY = 250;

Resources res = this.getContext().getResources();
Bitmap bg = BitmapFactory.decodeResource(res, R.drawable.bg1);
Bitmap chara = BitmapFactory.decodeResource(res, R.drawable.charan);
Bitmap charaT = BitmapFactory.decodeResource(res, R.drawable.charat);
Bitmap box= BitmapFactory.decodeResource(res, R.drawable.boxt);
//音楽読み込み
MediaPlayer se = MediaPlayer.create(getContext(),R.raw.ehehe);


public PView(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs);
// TODO 自動生成されたコンストラクター・スタブ
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas c){

c.drawBitmap(bg,0,100,paint);
if(flg == 0)
{
c.drawBitmap(chara,charaX,charaY,paint);
}
if(flg == 1)
{
c.drawBitmap(charaT,charaX,charaY,paint);
c.drawBitmap(box,50,200,paint);
}

invalidate();
}


public boolean onTouchEvent(MotionEvent me) {
//タッチされた時
if(me.getAction() == MotionEvent.ACTION_DOWN)
{

if(me.getAction() == MotionEvent.ACTION_DOWN) {
if(flg == 0)
{
flg = 1;
se.start();
}
else{
flg =0;
}
}
}
return false;
}
}
このような感じになっています どうかアドバイスをお願いします。

投稿日時 - 2013-06-08 17:41:55

QNo.8125036

困ってます

質問者が選んだベストアンサー

>現在時刻を取得
http://www.adakoda.com/android/000119.html

>時刻を表示
どういう形で表示しましょうか
ラベルにsetTextするのか、canvasにdrawTextするのか。。。

時計を表示とあるので、再描画契機をいつにするかが肝です。
マルチスレッド化して、秒間隔でCanvasをinvalidate()すれば良いと思いますが、Androidでは、普通にThreadを使うとまずいそうなので、Hanlderというものを使うそうです。
http://shimoigi.net/archives/768
http://egycolock.blog.fc2.com/blog-entry-74.html

>背景画像などを変えたりしたい
layout.setBackgroundResource(R.drawable.img2); ではいかがでしょうか。
現状、bg1の定義はできていそうなので、同様にbg2を定義して、必要に応じてレイアウトを変更します。

投稿日時 - 2013-06-11 21:22:50

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問