android:我如何检测用户触摸左侧 20% 的视图区域?
android: how can I detect when user touch left 20% of view area?
在 activity
中使用
public boolean dispatchTouchEvent(MotionEvent ev)
我怎么知道用户 触摸 左边 Y-axis
的 20% 边缘区域?
它应该是通用的并且有方向处理。
我不想在上面创建任何隐藏视图。
获取显示尺寸然后从触摸事件中获取点。用数学方法比较它是否还剩下 20%。
获取显示尺寸
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
获取接触点。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
float touchedX = ev.getX();
float touchedY = ev.getY();
return super.dispatchTouchEvent(ev);
}
- 获取设备宽度
- 计算左 20% 宽度尺寸(从 0 到 X)
- 使用
event.getX()
- 检查
event.getX()
是否在设备内部 20%
示例:
public class YourActivity extends Activity {
private LinearLayout background;
private float xValue, yValue, leftPersentage;
private int height,width;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
leftPersentage = (width)*20/100;
background = (LinearLayout) findViewById(R.id.background);
background.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
xValue = event.getX();
yValue = event.getY();
Log.d("Values Clicked" , xValue +"and" + yValue);
if(xValue <= leftPersentage){
// perform your task
Log.d("Values Clicked onLeft" , xValue +"and" + yValue);
}
return false;
}
});
}
}
在 activity
中使用
public boolean dispatchTouchEvent(MotionEvent ev)
我怎么知道用户 触摸 左边 Y-axis
的 20% 边缘区域?
它应该是通用的并且有方向处理。 我不想在上面创建任何隐藏视图。
获取显示尺寸然后从触摸事件中获取点。用数学方法比较它是否还剩下 20%。
获取显示尺寸
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
获取接触点。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
float touchedX = ev.getX();
float touchedY = ev.getY();
return super.dispatchTouchEvent(ev);
}
- 获取设备宽度
- 计算左 20% 宽度尺寸(从 0 到 X)
- 使用
event.getX()
- 检查
event.getX()
是否在设备内部 20%
示例:
public class YourActivity extends Activity {
private LinearLayout background;
private float xValue, yValue, leftPersentage;
private int height,width;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
leftPersentage = (width)*20/100;
background = (LinearLayout) findViewById(R.id.background);
background.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
xValue = event.getX();
yValue = event.getY();
Log.d("Values Clicked" , xValue +"and" + yValue);
if(xValue <= leftPersentage){
// perform your task
Log.d("Values Clicked onLeft" , xValue +"and" + yValue);
}
return false;
}
});
}
}