在Layout中自定义View

经常会看到在XML文件中调用别人的View就可以显示出各种奇妙的页面

简单的学习了一下,下面说一下如何自定义一个View, 并设置背景色

  1. // 第一步,创建一个继承自View的类
  2. public class MyView extends View {
  3. // 背景颜色
  4. private int background;
  5. // 默认背景颜色
  6. private final int default_background = Color.rgb(66, 145, 241);
  7. // 构造
  8. public MyView(Context context) {
  9. // 这里确保每一级都会被触发
  10. this(context, null);
  11. }
  12. // 构造
  13. public MyView(Context context, AttributeSet attrs) {
  14. // 这里确保每一级都会被触发
  15. this(context, attrs, R.attr.MyViewStyle);
  16. }
  17. // 构造
  18. public MyView(Context context, AttributeSet attrs, int defStyle) {
  19. // 执行父类构造
  20. super(context, attrs, defStyle);
  21. // 初始化
  22. final TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, defStyle, 0);
  23. // 获取设置的背景颜色
  24. background = attributes.getColor(R.styleable.MyView_background, default_background);
  25. // 设置
  26. this.setBackgroundColor(background);
  27. }
  28. }

  1. // 第二步,在XML-Layout中使用
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:app="http://schemas.android.com/apk/res-auto"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:background="@drawable/guide_0"
  8. android:orientation="vertical">
  9. // 这里使用的就是自定义的View
  10. <com.example.nljb.surpass.MyView
  11. // 可以使用自定义的View的设置参数
  12. app:background="#ffff5633"
  13. // 可以使用继承自View的设置参数
  14. android:layout_width="match_parent"
  15. android:layout_height="50dp"/>
  16. </RelativeLayout>

  1. // 第三步,自定义View的参数(第一步已经讲了如何使用)
  2. // values/attrs
  3. <?xml version="1.0" encoding="utf-8"?>
  4. <resources>
  5. <declare-styleable name="MyView">
  6. // format 类型有很多 ...
  7. <attr name="background" format="color"/>
  8. // <attr name="..." format="integer"/>
  9. // <attr name="..." format="dimension"/>
  10. // <attr name="..." format="enum">
  11. // <enum name="..." value="0"/>
  12. // <enum name="..." value="1"/>
  13. // </attr>
  14. // <attr name="..." format="string"/>
  15. // <attr name="..." format="boolean"/>
  16. ...
  17. </declare-styleable>
  18. <declare-styleable name="Themes">
  19. <attr name="MyViewStyle" format="reference"/>
  20. </declare-styleable>
  21. </resources>

Android之在Layout中自定义View相关推荐

  1. 《Android开发艺术探索》自定义View中关于“HorizontalScrollViewEx”的改进

    在<Android开发艺术探索>一书中自定义View一节中提到了关于一个类似横向滑动List的自定义ViewGroup:HorizontalScrollViewEx.如果你使用过的话就会发 ...

  2. Android 中自定义View 裁剪扇形图片

    Android 中自定义View 裁剪扇形图片 当需要裁剪图片为扇形区域时,使用Canvas.clipPath(path)方法可以裁剪为扇形区域 ps:此方法会导致绘制图片边缘有锯齿,暂无解决方法(知 ...

  3. Android软件开发之盘点自定义View界面大合集(二)

    Android软件开发之盘点自定义View界面大合集(二) - 雨松MOMO的程序世界 - 51CTO技术博客 雨松MOMO带大家盘点Android 中的自定义View界面的绘制 今天我用自己写的一个 ...

  4. Carson带你学Android:源码解析自定义View Draw过程

    前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化 等 今天,我将全面总结自定义View ...

  5. Android 雪花飘落动画效果 自定义View

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  6. android 仿360浮动,Android仿360悬浮小球自定义view实现示例

    Android仿360悬浮小球自定义view实现示例 效果图如下: 实现当前这种类似的效果 和360小球 悬浮桌面差不错类似.这种效果是如何实现的呢.废话不多说 ,直接上代码. 1.新建工程,添加悬浮 ...

  7. Android仿IOS滑动关机-自定义view系列(6)

    Android仿IOS滑动关机-自定义view系列 功能简介 GIf演示 主要实现步骤-具体内容看github项目里的代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击 ...

  8. 在 Android 系统源码中自定义系统服务(Custom System Service in AOSP)

    该原创文章首发于微信公众号:字节流动 在 Android 系统源码中自定义系统服务(Custom System Service in AOSP) 配置编译环境(Initial AOSP build e ...

  9. Android中自定义View的研究 -- 在XML中引用自定义View

    如果在一直使用SetContentView(new HellwView(this)觉得总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的便携性,这种感觉让人很不爽,呵呵,在这节里 ...

最新文章

  1. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
  2. 大年初六,你最崇拜的数据科学大咖是谁?
  3. opencv4 图像无缝融合
  4. 由单例模式学到:静态构造函数和静态字段
  5. 分布分析和分组分析_如何通过群组分析对用户进行分组并获得可行的见解
  6. linq 动态拼接where条件 类似 T_SQL And Or
  7. redis学习基本命令
  8. 集群故障处理之处理思路以及健康状态检查(三十二)
  9. CTF-Crypto-RSA整理
  10. 超实用windows软件推荐!新电脑必装哪些软件?
  11. cocosCreator关闭多点触摸的问题
  12. flv转mp4选项设置
  13. 【立项建议书】苏科大校园app立项建议书
  14. RPLIDAR思岚雷达学习记录--1--初识a1并跑通
  15. 微信php提取,php提取微信账单的有效信息
  16. web前端position定位层:absolute+relative应用
  17. rt1052 usb速率_如何才能赋予RT1052超级视频编解码能力?
  18. 全志lichee的pack命令
  19. 亚马逊A9算法是什么?有什么作用?(案例详解)
  20. Java实现数据库jdbc连接测试

热门文章

  1. 【鸿蒙 HarmonyOS】UI 组件 ( Button 组件 )
  2. 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
  3. 【计算理论】计算复杂性 ( NP 类不同表述 | 团问题 | P 对 NP 问题 )
  4. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )
  5. [Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结
  6. 02.v-cli快速搭建
  7. Mysql字段类型选择
  8. Linux 技巧:让进程在后台可靠运行的几种方法(转)
  9. Struts2 访问web元素
  10. .jQuery文档分析4-文档处理