求android自定义控件如何添加点击事件,长按事件

dongxiangxiang2012 2012-03-21 02:31:20
重写了一个TextView,现在想让它在点击后触发某个操作,长按后触发某个操作
...全文
3838 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongxiangxiang2012 2012-05-20
  • 打赏
  • 举报
回复
你在onSingleTapUp里面写上要实现的部分就行了[Quote=引用 12 楼 的回复:]

看到楼主已经能够解决了,很想知道你是怎么解决此问题的,我现在也遇到了这个情况,,谢谢啊,
[/Quote]
wangwocg 2012-05-19
  • 打赏
  • 举报
回复
看到楼主已经能够解决了,很想知道你是怎么解决此问题的,我现在也遇到了这个情况,,谢谢啊,
dongxiangxiang2012 2012-03-27
  • 打赏
  • 举报
回复
谢谢,我在onSingleTapUp里实现了,非常感谢[Quote=引用 6 楼 chen515272204 的回复:]

onSingleTapUp(MotionEvent e) 这个好像就是单击吧 跟长按区分开了
[/Quote]
chengziit 2012-03-24
  • 打赏
  • 举报
回复
直接实现点击事件和长按事件的接口不行么?。。。
傲慢的上校 2012-03-21
  • 打赏
  • 举报
回复
这样的实现 一般可能都是回调模式。。。
傲慢的上校 2012-03-21
  • 打赏
  • 举报
回复
看下button的源代码吧,button继承自textView。懂了吧楼主,仿照button代码修改
demo_ 2012-03-21
  • 打赏
  • 举报
回复
@Override
public boolean onTouchEvent(MotionEvent event)
{
detector.onTouchEvent(event);
return super.onTouchEvent(event);
}

将这个函数的返回值改为true,就可以区分单击onSingleTapUp和长按啦onLongPress时间啦。
文档看了 也不是很清楚 ,lz你自己在弄弄吧,知道什么原因就告诉我,按我的理解是TextView这个类在监听按钮类型事件的时候比不上Button那么强大吧
demo_ 2012-03-21
  • 打赏
  • 举报
回复
onSingleTapUp(MotionEvent e) 这个好像就是单击吧 跟长按区分开了
dongxiangxiang2012 2012-03-21
  • 打赏
  • 举报
回复
怕自己说的不够清楚,补充一下:1.单击屏幕,触发操作一,2.长按屏幕,触发操作二
dongxiangxiang2012 2012-03-21
  • 打赏
  • 举报
回复
单击的事件是在onDown()里面写吧,但是onLongPress()方法也会先触发onDown()方法啊,应该怎么办啊,还请多多指教
demo_ 2012-03-21
  • 打赏
  • 举报
回复
我无聊写了个玩玩,你看看吧



package lon.detector;

import android.content.Context;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.widget.TextView;

public class MyText extends TextView implements OnGestureListener
{
private GestureDetector detector;

public MyText(Context context)
{
super(context);
detector = new GestureDetector(this);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
detector.onTouchEvent(event);
return super.onTouchEvent(event);
}

public boolean onDown(MotionEvent e)
{
Log.e("-----", "---: on Down");
return false;
}

public void onShowPress(MotionEvent e)
{
Log.e("-----", "---: on ShowPress");

}

public boolean onSingleTapUp(MotionEvent e)
{
Log.e("-----", "---: on SingleTapUp");
return false;
}

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY)
{
Log.e("-----", "---: on Scroll");
return false;
}

public void onLongPress(MotionEvent e)
{
Log.e("-----", "---: on Long");
}

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
{
Log.e("-----", "---: on fling");
return false;
}

}

demo_ 2012-03-21
  • 打赏
  • 举报
回复
让自己view实现OnGestureListener接口
在你的类中组合一个GestureDetector detector = private GestureDetector(this);对象
重写自己view的onTouchEvent(MotionEvent event)方法在此方法中调用detector.onTouchEvent(event)这个方法
这样你就可以在onLongPress这个方法中想干嘛就干嘛啦。
dongxiangxiang2012 2012-03-21
  • 打赏
  • 举报
回复
顶起来,别沉了

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧