项目短视频
操作示范如下(时长16:16)

【例6-7】游戏中触屏事件示例
无需创建布局文件。将图片logo.gif和alice.jpg复制到图片目录。设计两个角色:人物Alice和小章鱼动物。当手指点击屏幕,小章鱼就移动到点击位置。如果点击位置在人物的区域内,则小章鱼保持原来位置不动,弹出一个“不能碰到Alice”的提示信息。
控制文件TouchActivity.java的源代码如下:
package com.example.chap06;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class TouchActivity extends AppCompatActivity {
TestView testView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
testView = new TestView(this);
setContentView(testView);
testView.setOnTouchListener(new MyOnTouch());
}
//内部类 触屏事件
private class MyOnTouch implements View.OnTouchListener{
@Override
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
int x = (int)event.getX();
int y = (int)event.getY();
testView.getXY(x,y);
setContentView(testView);
}
return true;
}
}
//内部类 新建视图
private class TestView extends View {
Context mContext;
Bitmap mAlice,mBitmap;
int x=700,y=700; //小动物的初始坐标
int AliceX,AliceY;
public TestView(Context context) {
super(context);
mContext = context;
mAlice = BitmapFactory.decodeResource(getResources(),R.drawable.alice);
mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.logo);
AliceX = mAlice.getWidth();
AliceY = mAlice.getHeight();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mAlice,0,0,null);
canvas.drawBitmap(mBitmap,x,y,null);
}
public void getXY(int dongx,int dongy){
if((dongx<AliceX)&&(dongy<AliceY)) { //小动物不能移动到Alice的图像区域内
Toast.makeText(mContext,"不能碰到Alice",Toast.LENGTH_SHORT).show();
}else{
x = dongx;
y = dongy;
}
}
}
}
打开项目配置文件AndroidManifest.xml,确保工程要启动的Activity类名为TouchActivity。

