相关疑难解决方法(0)

检测触摸按压与长按vs运动?

我目前正在摆弄Android编程,但我在检测不同的触摸事件时遇到一个小问题,即正常触摸按下(按下屏幕并立即释放),长按(触摸屏幕并按住手指) )和移动(在屏幕上拖动).

我想要做的是在屏幕上有一个图像(圆圈),我可以拖动它.然后,当我按一次(短/正常按下)时,Toast会提供一些关于它的基本信息.当我长按它时,会出现一个带有列表的AlertDialog来选择不同的图像(圆形,矩形或三角形).

我使用自己的OnTouchListener创建了一个自定义视图来检测事件并在onDraw中绘制图像.OnTouchListener.onTouch是这样的:

// has a touch press started?
private boolean touchStarted = false;
// co-ordinates of image
private int x, y;

public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    if (action == MotionEvent.ACTION_DOWN) {
        touchStarted = true;
    }
    else if (action == MotionEvent.ACTION_MOVE) {
        // movement: cancel the touch press
        touchStarted = false;

        x = event.getX();
        y = event.getY();

        invalidate(); // request draw
    }
    else if (action == MotionEvent.ACTION_UP) {
        if (touchStarted) {
            // touch …
Run Code Online (Sandbox Code Playgroud)

java android move touch long-press

65
推荐指数
3
解决办法
12万
查看次数

Android:长按一个按钮 - >执行操作

我想使用相同的按钮来执行2种不同的方法.用户单击它时的一种方法和用户LONG单击它时的第二种方法(不同).

我用它来进行单击(这非常有效):

Button downSelected = (Button) findViewById(R.id.downSelected);
        downSelected.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                method();
                }
            }

        });
Run Code Online (Sandbox Code Playgroud)

我试图添加一个longClickListener但它没有用.

欣赏有关如何解决这个问题的任何想法.

谢谢!

android

57
推荐指数
3
解决办法
11万
查看次数

Android:如何将click事件传播到LinearLayout子项并更改其drawable

我想创建一个线性布局,其行为与ImageButton类似.

<LinearLayout
    android:id="@+id/container"
    style="?WidgetHomeIconContainer">            

    <ImageView
        android:id="@+id/icon"
        style="?WidgetHomeIcon" />

    <TextView
        android:id="@+id/title"
        style="?WidgetHomeLabel"             
        android:text="@string/title"
        android:textAppearance="?attr/TextHomeLabel" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在ImageView,TextView和LinearLayout的样式中,我为所有状态设置了一个选择器.

现在:

  • 当我点击ImageView(我也尝试使用ImageButton) - 它的行为正确并且图像根据选择器xml进行了更改.
  • 当我点击LinearLayout时 - 单击线性布局,但ImageView和TextView不会改变它的可绘制/外观

所以我想做以下几点.当我点击父LinearLayout时,我需要将它的所有子项更改为按下状态.

我尝试将以下代码添加到LinearLayout onClickListener以传播点击:

@Override
public void onClick(View v)
{
    LinearLayout l = (LinearLayout) v;
    for(int i = 0; i < l.getChildCount(); i++)
    {
        l.getChildAt(i).setClickable(true);
        l.getChildAt(i).performClick();
    }
}
Run Code Online (Sandbox Code Playgroud)

但它仍然保持相同的状态.非常感谢您的帮助.

android onclick android-linearlayout

19
推荐指数
2
解决办法
2万
查看次数

长按GestureDetector也会点击

我尝试从这个问题实现代码:用Android检测长按,但它总是检测到长按,即使我只是点击它.我的代码如下(我扩展了ImageView,因为其中包含更多代码,与此问题无关):

public class EbsImageView extends ImageView  {
    final GestureDetector gestureDetector = new GestureDetector(this.getContext(), new GestureDetector.SimpleOnGestureListener() {
        public void onLongPress(MotionEvent e) {
            Log.e("", "Longpress detected");
        }
    public boolean onSingleTapUP(MotionEvent e) {
        Log.e("", "Press detected");

            // don't consume, we want the long press to fire if it was a 
            // long press
        return false;
        }
    });

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }
}
Run Code Online (Sandbox Code Playgroud)

android gesture

12
推荐指数
3
解决办法
7342
查看次数

OnLongPress增加时间

我有imageView.我使用平底锅,捏捏imageView.有时我需要删除imageView.所以,我使用OnLongClickListener删除图像.当我使用长按我的imageView删除.但是,当我使用OnTouchListener进行平移时,会激活imageView OnLongPress并从视图中删除我的imageView.怎么解决这个?

码:

    imageView.setOnLongClickListener(new OnLongClickListener(){

     @Override
     public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
                                    imageView.setVisibility(View.GONE);

      return true;
        }

  });



   imageView.setOnTouchListener(new View.OnTouchListener() {
       final Handler handler = new Handler(); 
    Runnable mLongPressed = new Runnable() { 
        public void run() { 
            Log.i("", "Long press!");
        }   
    };



     @Override
       public boolean onTouch(View v,MotionEvent event) {
        // TODO Auto-generated method stub

    if(event.getAction() == MotionEvent.ACTION_DOWN)
        handler.postDelayed(mLongPressed, 1000);
    if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() ==     MotionEvent.ACTION_UP))
        handler.removeCallbacks(mLongPressed);



    layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();

        switch(event.getAction())
         {
     case MotionEvent.ACTION_DOWN :
      {
          parms = …
Run Code Online (Sandbox Code Playgroud)

android ontouchlistener onlongclicklistener android-imageview

4
推荐指数
1
解决办法
7181
查看次数

Android:如何在触摸事件中手动实现longpress?

简短版本:我想要一种方法在onTouchEvent上启动基于时间的计数器,并测试在响应之前是否已经过了一定的时间,作为手动LongTouch检测.

说明:我有一个自定义的imageView,可以在两指翻转的屏幕上滑入/滑出屏幕.我想向它添加拖动事件,但这些需要比长按更快.我可以通过使用每个onTouchEvent更新一次的计数器来延迟拖动事件,并且仅触发拖动,例如10次计数,但计数器仅更新触摸事件并且手指必须移动.

如何创建一个基于时间的计数器,一个活动级别字段,每秒递增60次或某些?

android timer long-press

2
推荐指数
1
解决办法
8264
查看次数