实验六 事件处理
实验要求
- 掌握基于监听的事件处理机制,根据需求能够编写相应的事件处理程序。
- 能够熟练应用各种布局管理器和控件进行界面设计
环境
- 部署有Android Studio和Android SDK的主机;
- 建议在机房的HelloWorld例子上完成。
效果展示
代码展示
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private ImageView myImageView;
private EditText edt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt = findViewById(R.id.edt1);
myImageView=this.findViewById(R.id.imv1);
myImageView.setEnabled(true);
myImageView.setOnTouchListener(new myOnTouchListener() );
}
private class myOnTouchListener implements View.OnTouchListener{
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
//如果不按压为0,按压松开之后显示时间
long time = motionEvent.getEventTime()-motionEvent.getDownTime();
//如果直接传int型,setText会报错,在这里用转换成String类型
edt.setText(Integer.toString((int)time));
return true;
}
}
}
MotionEvent类
ACTION_DOWN: 表示用户开始触摸(在第一个点被按下时触发)
ACTION_MOVE: 当有点在屏幕上移动时触发,注意的是,由于灵敏度很高,所以基本上只要有点在屏幕上,此事件就会不停地被触发
ACTION_UP:表示用户抬起了手指(当屏幕上唯一的点被放开时触发)
ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界
ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(非最后一个点)
getDownTime() //按下开始时间
getEvenTime()//事件结束时间
GetDownTime()-getEvenTime()//总共按下的时间
其他用法
自行搜索