android实现clickspan点击的效果(类似@好友,当action_up时,效果消失)
2013-12-10 22:32
417 查看
要实现如下效果:
之前:
action_down:
松开之后,又回到第一个图片状态:
主要是实现LinkMovementMethod继承类,然后重写ontouchevent就ok了
主要是上面的两个点
参见:/article/3564350.html
http://stackoverflow.com/questions/16792963/android-clickablespan-intercepts-the-click-event
http://gundumw100.iteye.com/blog/851009
demo链接:http://download.csdn.net/detail/swust_chenpeng/6694065
之前:
action_down:
松开之后,又回到第一个图片状态:
主要是实现LinkMovementMethod继承类,然后重写ontouchevent就ok了
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { // TODO Auto-generated method stub int action = event.getAction(); if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { int x = (int) event.getX(); int y = (int) event.getY(); x -= widget.getTotalPaddingLeft(); y -= widget.getTotalPaddingTop(); x += widget.getScrollX(); y += widget.getScrollY(); Layout layout = widget.getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class); if (link.length != 0) { if (action == MotionEvent.ACTION_UP) { link[0].onClick(widget); buffer.setSpan(new BackgroundColorSpan(Color.TRANSPARENT), buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } else if (action == MotionEvent.ACTION_DOWN) { buffer.setSpan(new BackgroundColorSpan(Color.GRAY), buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0])); } return true; } else { Selection.removeSelection(buffer); } } return Touch.onTouchEvent(widget, buffer, event); }clickspan中的onclick:
@Override public void onClick(View widget) { // ((TextView)widget).setTextColor(Color.RED); Spannable spannable = ((Spannable)((TextView)widget).getText()); Selection.removeSelection(spannable);
// Selection.setSelection(spannable, 0); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show(); }
主要是上面的两个点
参见:/article/3564350.html
http://stackoverflow.com/questions/16792963/android-clickablespan-intercepts-the-click-event
http://gundumw100.iteye.com/blog/851009
demo链接:http://download.csdn.net/detail/swust_chenpeng/6694065
相关文章推荐
- Android 类似IPhone图片点击效果实现,点击logo变暗
- Android中实现类似qq好友列表展开收起的效果
- Android系统上实现类似按键精灵的效果(模拟触屏点击事件)
- android中关于点击屏幕,实现破碎的效果的实现
- Android学习--------实现增删改查数据库操作以及实现类似微信好友对话管理操作
- Android中使用RecyclerView + SnapHelper实现类似ViewPager效果
- Android ImageButton 如何实现一个点击效果
- AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- 通过YYtext实现文本点击(类似微博效果)
- Android中PopupWindow点击窗口之外和返回键消失,界面锁定的实现
- Android实现程序前后台切换效果(类似QQ后台运行)
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- Android实现Button点击效果
- Android实现程序前后台切换效果(类似QQ后台运行)
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- android实现点击效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- ios 点击返回顶部效果的实现,类似单击状态栏效果
- 在android中实现类似uc和墨迹天气的左右拖动效果
- Android实现点击获取验证码倒计时效果