【问题标题】:How could i drag it by using Gesture?我如何使用手势拖动它?
【发布时间】:2013-01-18 03:45:19
【问题描述】:

通过使用手势,我可以像这张图片一样拖动吗?我的意思是,必须拖动为刻度线。所以对于这个 onClickListener 必须使用。执行完毕后,应该可以在显示部分最终打开另一个屏幕。

当我用手时,我的意思是如果我打勾,那么它应该能够调用特定的方法。

我想使用 Gestures 编写代码,当我在 Image 下方这样做时,它应该能够执行或拖动。 Gestures 中的功能是如何工作的,我应该如何编写代码?

我怎么能这样做?谁能推荐我?

【问题讨论】:

    标签: android gesture gesture-recognition gestures android-gesture


    【解决方案1】:

    我相信您要求的内容类似于this question。这是prateek-raj 提供的源代码。顺便说一句,虽然您提供的示例复选标记图像很可爱,但 Android 并不关心您的图像是球图像、复选标记还是 a squirrel holding a bazooka,因此以下代码仍然适用。

    package com.examples.Touchmoveimage;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.LinearLayout.LayoutParams;
    
    public class Touchmoveimage extends Activity {
    
        int windowwidth;
        int windowheight;
    
        private LayoutParams layoutParams ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        windowwidth = getWindowManager().getDefaultDisplay().getWidth();
        windowheight = getWindowManager().getDefaultDisplay().getHeight();
        final ImageView balls = (ImageView)findViewById(R.id.ball);
    
        balls.setOnTouchListener(new View.OnTouchListener() {
    
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            LayoutParams layoutParams = (LayoutParams) balls.getLayoutParams();
                            switch(event.getAction())
                            {
                            case MotionEvent.ACTION_DOWN:   
                                                            break;
                            case MotionEvent.ACTION_MOVE:
                                                            int x_cord = (int)event.getRawX();
                                                            int y_cord = (int)event.getRawY();
    
                                                            if(x_cord>windowwidth){x_cord=windowwidth;}
                                                            if(y_cord>windowheight){y_cord=windowheight;}
    
                                                            layoutParams.leftMargin = x_cord -25;
                                                            layoutParams.topMargin = y_cord - 75;
    
                                                            balls.setLayoutParams(layoutParams);
                                                            break;
                            default:
                                                            break;
                            }
                                return true;
                        }
                });
    }
    }
    

    这解决了您的大部分问题,但不是全部。你也问过,

    它执行后,应该可以打开另一个屏幕 最后在显示部分。

    答案可能涉及创建一个 Intent 对象(在构造函数中定义新活动并启动它。关于主题here 有一个很好的教程。它的核心(切换活动)将是像这样:

    Intent k = new Intent("com.example.ActivityYouWantToGoTo");
    startActivity(k);
    

    您需要完成与创建新活动相关的所有步骤。 (例如,不要忘记更新清单。)要使您的代码同时(a)拖动复选框和(b)切换到新活动,您需要结合以上概念。您没有告诉我们您希望在什么情况下拖动对象或切换活动(例如,在它被拖动一次之后?当它被拖动到特定位置时?等等),但你会想要定义这些条件和然后在遇到新活动时调用新活动。

    【讨论】:

    • 问题不是打勾的手势,答案没有完全回答吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多