java - 如何根据用户的触摸移动图像?

标签 java android image touch-event ontouch

当用户触摸设备屏幕的左侧或右侧时,我试图让图像向左或向右移动。我有以下代码....我在 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 添加到 Activity 中的根布局,并在其上添加 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>

这是您的 Activity 代码:

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;
            }
        });

    }
}

关于java - 如何根据用户的触摸移动图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50858688/

相关文章:

java - MacOS 上的 mongo-java-driver 问题

java - 为什么在关闭并重新打开对话框 fragment 后保留对象列表的值?

java - 如何将应用内购买添加到按钮?

java - 单击返回两次以关闭抽屉布局中带有 Toast 的应用程序

android - 在不使用 Intent 的情况下通过我的应用程序以编程方式插入新联系人

image - 尝试使用opencv使Photoshop达到色彩平衡

java - Android Eclipse 上下文无法解析返回类型

android - Google 地方信息自动完成无法加载搜索结果

php - 对单个页面的不同图像使用 Backstretch

java - 并行/并发加载 AWT-Image,然后替换占位符图像