Android View的 滑动冲突及工作流程
来源:互联网 发布:回忆杀网络用语 编辑:程序博客网 时间:2024/05/29 18:45
View的滑动冲突
一简单场景下(如:水平滑动里面嵌套一层垂直滑动)解决办法很多,这里记一个方法。通过水平滑动的距离dx与垂直滑动的距离dy的大小来判断是水平还是垂直滑动。通常有外部拦截跟内部拦截,外部拦截即重写父容器的onInterceptTouchEvent,而内部拦截即重写子元素的dispatchTouchEvent,并根据具体情况将逻辑返回给父容器的onInterceptTouchEvent.因外部拦截法较内部拦截法更为简单,所以推荐使用外部拦截法解决滑动冲突。
View的工作流程
1.Measure,layout,draw。Measure确定测量的宽高,layout确定view的最终宽高跟四个顶点,draw将view绘制到屏幕。其中view的measure方法是final方法,子类不可重写,而viewgroup的measure可以重写。Margin属性是父容器控制,而padding属性自定义view自己控制,所以设置前padding属性需重写。步骤如下:
在onDraw方法中
int paddingLeft=getPaddingLeft();int paddingRight=getPaddingRight();int paddingTop=getPaddingTop();int paddingBottom=getPaddingBottom();
使用前将padding值添加到自定义view中即可。
2.为自定义view添加自定义属性步骤:
2.1 在values目录下创建xml文件 如attrs.xml
2.2
<?xml version="1.0" enco ding="utf-8"?><resources> <declare-styleable name="circleview"> <attr name="circle_color" format="color"></attr> </declare-styleable></resources>
2.3在自定义view的构造方法中添加
TypedArray array=context.obtainStyledAttributes(attrs, R.styleable.circleview);mColor=array.getColor(R.styleable.circleview_circle_color, Color.RED);array.recycle();
2.4在xml中应用
必须先引入 xmlns:app=http://schemas.android.com/apk/res-auto
<com.example.androidstepdemo.view.CircleView android:layout_width="match_parent" android:layout_height="180dp" android:background="#000000" android:padding="20dp" app:circle_color="#f2f2f2" />
其中 app可以换成用户自己定义的变量名
1 0
- Android View的 滑动冲突及工作流程
- Android View事件分发机制及View的滑动冲突
- View的滑动方式及冲突处理
- Android中View的滑动冲突
- android View滑动冲突的解决方式
- android View滑动冲突的终极解决方案
- view 的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View 的滑动冲突
- View的滑动冲突
- View 的滑动冲突
- View的滑动冲突
- View的滑动冲突
- View的滑动冲突
- Android--View的工作流程
- idea maven jetty 配置
- AndroidStudioSDK下tools下各个文件(夹)的用处
- 笔记,TCP协议socket网络编程
- 尝试用顺序表实现排序算法(持续更新..)
- 关于alter table enable row movement的应用
- Android View的 滑动冲突及工作流程
- Ubuntu启用VNC服务的配置
- lintcode:Subsets
- SQLite允许向一个integer型字段中插入字符串
- hdu2553N皇后问题(预处理)
- linux串口操作
- JRE JDK SDK 和JVM的关系(图文)
- JSON格式
- UIButton内文字自适应button长度