java - 如何根据用户的触摸移动图像?
问题描述
当用户触摸设备屏幕的左侧或右侧时,我试图让图像向左或向右移动。我有以下代码....我已经在 Android Studio 中运行了模拟器,当我单击模拟器屏幕的右侧或左侧时......没有任何反应。这段代码有什么问题?欢迎所有答案!我在 Activity 中输入了以下代码,其中包含我要移动的图像:
public class GameScreen1 extends AppCompatActivity implements View.OnTouchListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_screen1);
ImageView circle1 = (ImageView) findViewById(R.id.circle1);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.circle1:
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//WHAT CODE SHOULD I PUT INSTEAD OF THE FLOAT X AND X++
int ScreenWidth = getResources().getDisplayMetrics().widthPixels;
float Xtouch = event.getRawX();
int sign = Xtouch > 0.5*ScreenWidth ? 1 : -1;
float XToMove = 50;
int durationMs = 50;
v.animate().translationXBy(sign*XToMove).setDuration(durationMs);
}
break;
}
return false;
}
}
解决方案
将 ID 添加到活动中的根布局并在其上添加 TouchListener。
这是一个例子:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/cl_root"
android:layout_height="match_parent"
tools:context=".MainActivity">
</android.support.constraint.ConstraintLayout>
这是您活动的代码:
public class MainActivity extends AppCompatActivity {
ConstraintLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = findViewById(R.id.cl_root);
layout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int screenWidth = getResources().getDisplayMetrics().widthPixels;
int x = (int)event.getX();
if ( x >= ( screenWidth/2) ) {
//Right touch
}else {
//Left touch
}
return false;
}
});
}
}
推荐阅读
- html - 是否可以相对于 div 缩放字体大小(不是视口)?
- java - 在 Java 8 流逻辑上需要帮助
- c# - 如何在 ASP.Net Core Razor 中使用 cookie 添加我自己的身份验证?
- java - java - 如何在Java中只显示退出迷宫的正确路线?
- angular - 将项目升级到 Angular 7 破坏了 Octopus 部署
- java - 在矩形上绘制文本
- python - 如何摆脱命令中多个单引号引起的语法错误
- sql - 连接多个值并在 null 时删除字符
- .net - 将文件从 Azure IaaS VM(文件存储)复制到 Azure PaaS 应用服务 (Blob)
- reactjs - 将函数组件作为渲染道具的参数传递