频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android开发之自定义View2学习
2018-05-14 11:29:25      个评论    来源:NervousDing的博客  
收藏   我要投稿

1.viewGroup绘制流程

总结:当继承ViewGroup的时候必须要重写onMeasure方法和onLayout方法,在onMeasure方法里面完成对孩子的测量,在onLayout方法里面完成对孩子的摆放. 当继承View的时候必须要重写onMeasure方法和onDraw方法 在onMeasure方法里面完成对当前view的测量,在onDraw完成绘制.

2.getMesasuredWidth和getwidth区别

getMesasuredWidth是对view测量后使用 getWidth 是对view排版后才可以使用

3.交叉布局

public class CrossLayout extends RelativeLayout {
private boolean isLeft;
public CrossLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
//对孩子进行摆放
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int top = 0;
//1.找到所有的孩子
for(int i=0;i<getChildCount();i++){
//2.找到所有的孩子
View child = getChildAt(i);
//3.对孩子进行摆放
int left = 0;
//3.1 对isleft 判断 如果为true 就摆到左边 否则就摆到右边
if (isLeft){
//4.判断是奇数还是偶数 如果是奇数就摆到左边 如果是偶数就摆到右边
if (i % 2 ==0){
//对于控件是奇数 就摆到左边
left = 0;
}else{
//对于控件来说是偶数 摆到右边 left = 容器宽度 - 孩子控件的宽度
left = getMeasuredWidth() - child.getMeasuredWidth();
}
}else{
//5.判断是奇数还是偶数 如果是奇数就摆到左边 如果是偶数就摆到右边
if (i % 2 ==0){
//对于控件是奇数 就摆到左边
left = getMeasuredWidth() - child.getMeasuredWidth();
}else{
//对于控件来说是偶数 摆到右边 left = 容器宽度 - 孩子控件的宽度
left = 0;
}
}
int right = left+child.getMeasuredWidth();
int bootom = top + child.getMeasuredHeight();
child.layout(left,top,right,bootom);
top += child.getMeasuredHeight();
}
}
//用来实现布局切换
public void startSwitchLayout() {
isLeft =!isLeft;
//请求重新排版
requestLayout();
}
}
点击复制链接 与好友分享!回本站首页
上一篇:Android IPC周末总结---看笔记一些心得
下一篇:Android开发之常用的加密算法讲解
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站