|
HTML HTML5 HTMLタグ スマートフォン |
CSS CSSプロパティ CSS・HTML便利ツール |
HTML色見本 配色組み合わせツール 特殊文字 |
JAVA Android |
PHP Smarty修飾子 EXCEL |
*このページは web-dou.com のアーカイブです。(2025年 サイト統合)
タッチした位置に円とテキストを描画するSurfaceViewのサンプルコード
package jp.mediawing.android.test2;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.MotionEvent;
import android.graphics.Color;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
//レイアウトファイルでなく カスタムクラスを使用。
//setContentView(R.layout.main);
setContentView(new SurfaceTestView(this));
}
// SurfaceViewをextends したカスタムクラス
// SurfaceHolder.Callback をインプリメント
class SurfaceTestView extends SurfaceView
implements SurfaceHolder.Callback {
int x = 100 ;
int y = 100 ;
public SurfaceTestView(Context context) {
super(context);
// コールバックの設定
getHolder().addCallback(this);
}
// Surface が作成されたとき(実装必須)
public void surfaceCreated(SurfaceHolder holder) {
draw() ;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
int x2, y2 ;
int _x = 1, _y =1 ;
boolean loop = true ;
if(ev.getAction() == MotionEvent.ACTION_DOWN) {
// タッチした座標を取得
x = (int)ev.getX();
y = (int)ev.getY();
draw() ; // 描画
}
return true;
}
// 描画処理
public void draw()
{
Canvas canvas = getHolder().lockCanvas();
if ( canvas!=null)
{
canvas.drawColor(Color.BLACK);
// 円を描画
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.RED);
canvas.drawCircle(x, y, 10.0f, paint);
// テキストを描画
paint.setTextSize(10);
paint.setColor(Color.RED);
canvas.drawText("x=" + x + " y=" + y , x , y+15, paint);
getHolder().unlockCanvasAndPost(canvas);
}
}
// Surface が変更されたとき(実装必須)
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {
}
// Surface を破棄したとき(実装必須)
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
}
class SurfaceTestView extends SurfaceView
implements SurfaceHolder.Callback { }
// Surface が作成されたとき public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) // Surface が変更されたとき public void surfaceCreated(SurfaceHolder holder) // Surface を破棄したとき public void surfaceDestroyed(SurfaceHolder holder)