
AndroidのSurfaceViewの上にコントロール(Button,EditText)を配置するサンプル@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(); } }
android EditText で入力されたEditTextを識別するサンプル@tryTextWatche... AndroidのEditTextにアプリ起動直後にソフトウェアキーボードを出すサンプ...
サンプルがほしいです。
コメントありがとうございます。
サンプルはページ下「Sample Download」よりダウンロードすることができます。