不用设置selector也能更改View的显示状态
2016-08-08 14:59
337 查看
今天加点小东西,可能比较适用。
一般情况下view在click或者pressed的时候希望view能跟正常情况(没有pressed或者click)区分,这样我们就在drawable里面添加selector,分别设置view未pressed和pressed时的drawable.如下:
这个方法一般的点击事件是可以用的,但是设置过OnTouchListener方法的view就不能使用。
这个方法虽然简单,但个人觉得还实用。
一般情况下view在click或者pressed的时候希望view能跟正常情况(没有pressed或者click)区分,这样我们就在drawable里面添加selector,分别设置view未pressed和pressed时的drawable.如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/sel"/> <item android:state_pressed="false" android:drawable="@drawable/unsel"/> </selector>我想很多都这样做。以前我们项目当中完全没有涉及到按下view的一个状态,这样造成的后果就是:当你你点击一个view时,在反应慢的手机上或者在加载一个比较耗时的操作时他可能要过段时间(几秒钟)才跳转或者出现你点击之后的效果。那么在响应的这段时间你是纠结的!因为你不知道你到底点击了这个view(按钮)没?毕竟在UI(手机显示)上是没有给你任何提示的。这样我们设置一个selector是很有必要的。但是一个view(按钮)设置selector你可能会比较简单。但是一个项目几十上百(更多)的view(按钮)你都要设置这样是很烦的。该怎么解决全部的类?看下面......这个是我在早几年前那个时候我刚做android没有多久我老大写的一个方法。。那个时候不知道为什么,也没有问(不好意思问,现在想想也是醉了。。哈哈。。)代码我已经记不得了,直接的效果。我试着实现的。。。
/** * 单击事件 * @notice 重写过OnTouchListener方法的View请不要调用此方法 * @param view * @param listener */ public static void onClickListener(View view, final View.OnClickListener listener) { if (view == null) { return; } view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: v.setAlpha(0.5f); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: if (event.getX() <= v.getRight() - v.getLeft() && event.getX() >= 0 && event.getY() <= v.getBottom() - v.getTop() && event.getY() >= 0 && listener != null) { listener.onClick(v); } v.setAlpha(1.0f); } return true; } }); }这方法就是设置view的OnTouchListener方法判断按下和抬起的手势分别设置他的一个Alpha值达到效果。
这个方法一般的点击事件是可以用的,但是设置过OnTouchListener方法的view就不能使用。
这个方法虽然简单,但个人觉得还实用。
相关文章推荐
- sql2005:显示或更改当前服务器的全局配置设置 sp_configure
- Android基础教程(一)之------更改与显示文字标签TextView标签的使用
- 利用selector设置ImageButton不同状态下的背景图片
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- 设置软键盘显示状态
- asp.net 2.0GRID VIEW显示日期格式设置
- Delphi TRzTreeView 或者TRzCheckTree或者TTreeView离开焦点还显示灰色的选择状态
- android--设置TextView部分文字的颜色和背景(高亮显示)
- 在Activiey 中更改 并刷新Layout(布局)中的控件(ImageView)的显示
- 增加工具栏提示&修改程序字体&设置文档标题&控制窗口显示&更新菜单选中/不选中状态
- 动态地往datagirdview中添加数据,当所添加的数据超过datagridview的显示范围后,滚动条就无法显示,程序出现假死状态,(scrollbars=both)
- JTable中,显示checkbox以及更改选中状态
- 设置ListView控件的view属性为LargeIcon时的显示方式
- adnroid selector 组件的状态显示该状态对应的背景图片
- android--设置TextView部分文字的颜色和背景(高亮显示)
- Android基础教程(一)之------更改与显示文字标签TextView标签的使用
- WORD中如何设置前几页不显示页码,同时更改总页数
- Android基础教程(一)之------更改与显示文字标签TextView标签的使用
- Android入门教程(五)之------更改与显示文字标签TextView标签的使用(转)
- 2.3更改和显示标签-TextView