xmlファイルにcustomViewとしてSurfaceViewを実装する作業をしています。それにontouchメソッドを追加したいと思います。しかし、現在はアイコン画像を描画していません。誰でもここで私を助けてください、そしてそれにontouchメソッドを追加する方法にも答えてください。
- 問題-ビットマップを描画していません。
- 質問-それにタッチメソッドを追加する方法。
私のxmlファイル。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:gif="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<rahul.surfacetest.ImageClass
android:id="@+id/viw"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:background="@drawable/them"
android:layout_centerInParent="true"
android:paddingTop="200dp" />
</RelativeLayout>
その私のメインクラス
public class MainActivity extends Activity{
ImageClass Is;
static float x,y=0;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Is=(ImageClass)findViewById(R.id.viw);
bmp=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}
}
その私の表面クラス
public class ImageClass extends SurfaceView implements OnTouchListener,Runnable {
float x,y;
SurfaceHolder holder;
boolean isItOk = true;
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
Paint p = new Paint();
public ImageClass(Context context, AttributeSet attrs) {
super(context, attrs);
y=x=10;
holder = getHolder();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x=event.getX();
y=event.getY();
break;
case MotionEvent.ACTION_UP:
x=event.getX();
y=event.getY();
break;
case MotionEvent.ACTION_MOVE:
x=event.getX();
y=event.getY();
break;
default:
break;
}
return true;
}
@Override
public void run() {
Canvas c = holder.lockCanvas();
c.drawBitmap(bmp, x,y, null);
holder.unlockCanvasAndPost(c);
}
}