自定义控件属性补充、9patch图
来源:互联网 发布:linux安装包放在哪里 编辑:程序博客网 时间:2024/06/05 19:28
自定义控件属性和自定义控件类关联时,在两个参数的构造方法中,除了通过attrs.getAttributeValue(命名空间,属性名);方法获得属性的实例外,还可以用
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.myToggleBtn);方法。
具体操作如下:
public myToggleButton(Context context, AttributeSet attrs) {super(context, attrs);TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.myToggleBtn);int count = ta.getIndexCount();for (int i = 0; i < count; i++) {// 获得某个属性的id值int itemId = ta.getIndex(i);switch (itemId) {case R.styleable.myToggleBtn_myBackground:backId = ta.getResourceId(itemId, -1);if(backId == -1){throw new RuntimeException("请设置背景图片");}back = BitmapFactory.decodeResource(getResources(), backId);break;case R.styleable.myToggleBtn_mySlideBtn:slideId = ta.getResourceId(itemId, -1);if(slideId == -1){throw new RuntimeException("请设置滑动图片");}slide = BitmapFactory.decodeResource(getResources(), slideId);break;case R.styleable.myToggleBtn_currentState:currStat = ta.getBoolean(itemId, false);if (currStat) {// 当前状态为开,则令左边起始位置为0slide_left = back.getWidth() - slide.getWidth();} else {// 当前状态为关,则令左边起始位置为差slide_left = 0;}// 初始化时,刷新当前状态invalidate();break;}}initView();}
该方法在获得属性实例时,不用每次都写命名空间,方便了一些。
在上面代码中自定义开关的图片资源在获得属性实例时就赋值了,所以,在initView()方法中就不用再赋值了。
9patch图
左边和上边代表可以拉伸的区域。
右边和下边代表可以放置其他控件的区域。
0 0
- 自定义控件属性补充、9patch图
- 一个简单自定义控件以及.9patch图片的使用
- Android自定义标题栏控件(补充)
- 自定义控件----自定义属性
- 自定义控件-------(拓展系统控件)补充
- 自定义控件:自定义组合控件+自定义属性
- c# DataGridView控件的使用补充--属性
- 自定义控件中属性
- android 自定义控件属性
- 自定义控件属性解释
- Android自定义控件属性
- android 自定义控件属性
- C#自定义控件属性
- Android自定义控件属性
- C#自定义控件属性
- Android自定义控件属性
- 自定义控件属性
- Android自定义控件属性
- VS快捷键教程
- php的配置
- jQuery对val和atrr("value",赋值的区别
- 常见C++内存池技术
- Vision引擎中着色器源代码编辑器
- 自定义控件属性补充、9patch图
- 学生信息管理系统
- 从备份集恢复归档日志的测试与说明
- Visual Studio 常用快捷键 (二)
- note of Big data dummies: Understanding the waves of managing data
- 如何一个android工程作为另外一个android工程的lib
- 原码, 补码, 和反码的区别与转化;
- Android让Fragment加载到Activity中
- Valid Number