サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > AndroidのSurfaceViewの上にコントロール(Button,EditText)を配置するサンプル@tryButtonOnSurfaceView00
Google Play AAKAKAxSOFTへ

AndroidのSurfaceViewの上にコントロール(Button,EditText)を配置するサンプル@tryButtonOnSurfaceView00

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryButtonOnSurfaceView00の実行イメージtryButtonOnSurfaceView00の実行イメージ

SurfaceViewの上にコントロール(Button,EditText)とかを
 配置してみる。

大事なところ
 Framelayoutをの上にコントロールを配置する

プログラム内でやってること
 ボタンの押されたときの処理(Button,OnClickListener)
 Framelayoutの上にコントロールを配置
 SurfaceViewで画面サイズが変更されたときに検知
 Canvasの背景色を変更する
 SurfaceViewに斜線を引く

開発環境
 Eclipse IDE バージョン: 3.7 Indigo Service Release 1
 ターゲットプラットフォーム: 2.1
 API レベル: 7

package trial.sample.trybuttononsurfaceview00;

import java.util.Random;

import android.app.Activity;
import android.app.AlertDialog;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TryButtonOnSurfaceView00Activity extends Activity
	implements OnClickListener, SurfaceHolder.Callback {
    
	private Button mButton;	// SurfaceViewの上に配置してあるボタン
	//private SurfaceViewCustom mSurfaceViewCustom;	// 
	private SurfaceView mSurfaceView;	// 背景として設置してあるSurfaceView
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 各コントロールを取り出す
        // ボタン
        this.mButton = (Button)this.findViewById(R.id.button1);
        this.mButton.setOnClickListener(this);
        // SurfaceView
        this.mSurfaceView = (SurfaceView)this.findViewById(R.id.surfaceView1);
        
        // コールバック関数をセットする
        SurfaceHolder holder = this.mSurfaceView.getHolder();
        holder.addCallback(this);
    }

    ////////////////////////////////////////////////////////////
    // ボタンがクリックされたときに呼び出される
	public void onClick(View v) {
		Random rand = new Random();
		
		// 矩形を描く
		Canvas canvas = this.mSurfaceView.getHolder().lockCanvas();
		
		// 背景色を変更する
		canvas.drawColor(
				Color.rgb(rand.nextInt() % 255,
						rand.nextInt() % 255,
						rand.nextInt() % 255));

		// 斜線を引く
		Paint paint = new Paint();
		paint.setStrokeWidth(2.0f);
		paint.setAntiAlias(true);
		
		// 画面のサイズを取り出す
		int w = this.mSurfaceView.getWidth();
		int h = this.mSurfaceView.getHeight();
		
		canvas.drawLine(2, 2, w - 2, h - 2, paint);
		
		this.mSurfaceView.getHolder().unlockCanvasAndPost(canvas);
		
	}

	////////////////////////////////////////////////////////////
	// SurfaceViewのサイズが変更された
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {
		this.showMsg("surfaceChanged",
				"width: " + width + " height: " + height);
	}
	
	////////////////////////////////////////////////////////////
	// SurfaceViewがつくられた
	public void surfaceCreated(SurfaceHolder holder) {
		this.showMsg("surfaceCreated", "");
	}

	////////////////////////////////////////////////////////////
	// SurfaceViewが破棄された
	public void surfaceDestroyed(SurfaceHolder holder) {
		this.showMsg("surfaceDestroyed", "");
	}
	
	
	////////////////////////////////////////////////////////////
	// ダイアログボックスに表示する
	private void showMsg(String title, String text) {
		AlertDialog.Builder ad = new AlertDialog.Builder(this);
		ad.setTitle(title);
		ad.setMessage(text);
		ad.setPositiveButton("OK", null);
		ad.show();
	}
}



サンプルプロジェクトをダウンロード APKファイルをダウンロード

, , , , , ,

android EditText で入力されたEditTextを識別するサンプル@tryTextWatche... AndroidのEditTextにアプリ起動直後にソフトウェアキーボードを出すサンプ...

2 Responses to “AndroidのSurfaceViewの上にコントロール(Button,EditText)を配置するサンプル@tryButtonOnSurfaceView00”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>