
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
- 自定义View类实现
- 自定义View标签
- 自定义View 布局
- 自定义View 选择器
- 自定义View 素材
- Activity 自定义view布局引用
- Activity使用自定义View
自定义ItemToggleView 常用于Settings中,主要控制开关的开启与关闭。
自定义ItemToggleView实现效果如下:

开启.jpg

关闭.jpg
1. 自定义View类实现
public class ItemToggleView extends RelativeLayout { private static final String TAG = "ItemToggleView"; private TextView tv_title; private TextView tv_des; private static final String NAMESPACE = "http://schemas.android.com/apk/res/com.programandroid"; private String mDesTitle; private String mDesOff; private String mDesOn; private ImageView mImageView; private boolean isOnOFF; public ItemToggleView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initAttrs(attrs); initUI(context); } public ItemToggleView(Context context, AttributeSet attrs) { super(context, attrs); initAttrs(attrs); initUI(context); } public ItemToggleView(Context context) { super(context); initUI(context); } // 单独抽取出来的 xml--->view private void initUI(Context context) { View.inflate(context, R.layout.item_toggle_view, this); tv_title = (TextView) findViewById(R.id.tv_title); tv_des = (TextView) findViewById(R.id.tv_des); mImageView = (ImageView) findViewById(R.id.switch_imageview); tv_title.setText(mDesTitle); } public boolean getCheck() { return isOnOFF; } /** * @param isCheck * 传递一个选中未选中的状态变量(true 选中 false未选中) */ public void setCheck(boolean isCheck) { // mSwitchControlView.setChecked(isCheck); if (isCheck) { tv_des.setText(mDesOn); mImageView.setImageDrawable(getResources().getDrawable( R.drawable.toggle_on)); } else { tv_des.setText(mDesOff); mImageView.setImageDrawable(getResources().getDrawable( R.drawable.toggle_off)); } isOnOFF = isCheck; } /** * @param attrs * 包含了属性名称和属性值的set集合 */ private void initAttrs(AttributeSet attrs) { // 打印属性总个数 /* * Log.i(tag, "attrs.getAttributeCount() = "+attrs.getAttributeCount()); * for(int i=0;i
2. 自定义View标签
1.注意 :自定义 Android 命名空间
同Android命名空间(xmlns:android="http://schemas.android.com/apk/res/android" )方法一样,想使用自定义view的属性,必须声明自定义view的命名空间
(xmlns:programandroid="http://schemas.android.com/apk/res/com.programandroid")
2. 注意:自定义View 属性
自定义View 属性如下:
programandroid:desOff=" 不选中"
programandroid:desOn=" 选中"
programandroid:des
属性声明在res/values/attrs.xml中定义
<?xml version="1.0" encoding="utf-8"?>
3. 自定义View 布局
<?xml version="1.0" encoding="utf-8"?>
4. 自定义View 选择器
<?xml version="1.0" encoding="UTF-8"?>
5. 自定义View 素材

toggle_off.png

toggle_on.png
6. Activity 自定义view布局引用
7. Activity使用自定义View
/** * 自定义 ItemToggleView */ private void InitItemToggleView() { // TODO Auto-generated method stub final ItemToggleView mItemToggleView = (ItemToggleView) findViewById(R.id.custom_item_toggle_view); mItemToggleView.setCheck(false); mItemToggleView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mItemToggleView.setCheck(!mItemToggleView.getCheck()); } }); }
友情推荐:
Android 干货分享
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!