一、简介首先声明,本文讲解的Android DataBinding原理,不涉及Android DataBinding的配置和使用,如果大家想了解Android DataBinding的使用教程,请去Google Android官网,里面有非常详细的讲解。另外,本文也不是为Android DataBinding歌功颂德的,如果对着对本文的一些总结有不同观点,请留言,希望和大家一起思考这项“新技术”。
转载 2024-03-11 15:02:50
243阅读
# Android 自定义View databinding 实现教程 ## 一、整体流程 ```mermaid flowchart TD A(创建自定义View) --> B(在xml中引用) B --> C(创建DataBinding类) C --> D(在xml中使用DataBinding) ``` ## 二、步骤及代码示例 ### 1. 创建自定义View
原创 2024-05-15 05:50:13
488阅读
先上效果图,不然读不下去了,right?动图静态图 1. 回顾【Android自定义View:一个精致的打钩小动画】 上一篇文章,我们已经实现了基本上实现了控件的效果了,但是...但是...过了三四天后,仔细看回自己写的代码,虽然思路还在,但是部分代码还是不能一下子的看得明白...我的天,这得立马重构啊~ 恰好,有个简友 ChangQin 模仿写了一下这个控件,我看了后觉得我也可以这样实现一下。2
转载 3月前
344阅读
android提供了精巧和有力的组件化模型构建用户的UI部分。主要是基于布局类:View和ViewGroup。在此基础上,android平台提供了大量的预制的View和ViewGroup子类,即布局(layout)和窗口小部件(widget)。可以用它们构建自己的UI。如果没有符合你需求的预制窗口小部件,你可以创建自己的视图子类。如果只是对已存在的窗口小部件或者布局做小的调整,只需继承该类,覆盖相
转载 2024-08-21 11:27:42
55阅读
# 在 Android 自定义 View 中使用 DataBindingAndroid 开发中,Data Binding 是一项非常有用的工具,可以简单地将 UI 组件与应用程序的数据源绑定在一起。本文将介绍如何在自定义 View 中使用 Data Binding,并通过相关代码示例进行说明。 ## 什么是自定义 View? 自定义 View 是指开发者根据需求创建的视图,它可以提供独
原创 9月前
184阅读
MVVM视图模型双向绑定,是Model-View-ViewModel的缩写,也就是把MVC中的Controller演变成ViewModel。Model层代表数据模型,View代表UI组件,ViewModel是View和Model层的桥梁,数据会绑定到viewModel层并自动将数据渲染到页面中,视图变化的时候会通知viewModel层更新数据。以前是操作DOM结构更新视图,现在是数据驱动视图。优点
转载 2024-07-14 06:43:32
60阅读
@BindingAdapter用于修饰方法。一些属性需要定制绑定逻辑,一个用@BindingAdapter修饰的静态方
原创 2022-08-04 09:21:56
69阅读
Android自定义LoadingView好久没更新博客了,过年回来没什么事,把之前的写的东西记录一下吧~ 之前因为公司项目需求只要自定义一个loading,效果如下– 没错,就是一个由几个小圆组成的一个转动的大圆,小圆会根据转动不断变小。 好了不多说废话,接下来我们看下怎么实现改效果~首先先思考,这个view是由若干个小圆构成的,每个小圆的直径跟变化都不同步,所以我们要定义一个圆形内部类,方
转载 2024-05-29 06:48:59
119阅读
一、Custom View1、view的继承关系2、Android 如何绘制试图层次当activity获取焦点时,它必须提供layout层次的根节点,然后android 系统开始视图的绘制过程。绘制是从layout的根节点开始 的,按照从上往下的顺序,父元素优先子元素。 绘制的两个过程: - measuring pass:实现measure(int,int)方法,顺序也是从上往下,每个vie
转载 2023-08-04 14:13:01
487阅读
 在我们当前项目中遇到了这样的问题:android.support.design.widget.TabLayout 中使用自定义样式,结果出现了很多意料之外的问题。1、怎样使用自定义样式 //设置切换页标题 for (int i = 0; i < tabList.size(); i++) { mTabLayout.addTab(mT
转载 2023-06-26 21:40:04
656阅读
概述本篇文章主要是介绍用系统控件重新组合并添加上自定义属性,来实现特定效果,重点讲述自定义属性的使用。在Android系统中,自定义控件就是自定义一个类来继承View或这继承ViewGroup或者用系统控件重新组合来实现我们想要的效果。既然说到自定义控件,那么我们为什么要使用自定义控件呢,大概原因有以下两个方面吧:同样的控件在不同的版本上差异太大,最明显的dialog弹出框在2.x与4.x上的差异
转载 2023-09-13 10:53:56
85阅读
前言关于自定义View,相信大家都已经很熟悉了。今天,我想分享一下关于自定义View中的一部分,就是自定义Drawable。 Drawable 是可绘制对象的一个抽象类,相对比View来说,它更加的纯粹,只用来处理绘制的相关工作而不处理与用户的交互事件,所以适合用来处理背景的绘制。 在介绍自定义Drawable前,我们先来学习一下几种常见的Drawable。可绘制对象资源介绍可绘制对象是
转载 2024-01-07 19:04:52
260阅读
在很多时候系统的listview很难满足我们的需要,因为布局比较复杂,所以这时候肯定需要一个布局文件来满足自己需要。这个东西相信大家在网上能搜索一大摞的资料,只是可能感觉不是很适合小白看吧,毕竟有很多大神想追求更加有技术性的东西,我其实想把这些东西简单化,没别的意思。下面我贴出效果图吧,毕竟是简单化的,没有太多的渲染和繁华。下面我贴出工程结构图好了,下面我会一步步详细的介绍如何做listview自
在实际的开发工程中,不免想有一个中间是空洞的Drawable,也就是中间是透明的,而其他区域正常显示的Drawable。主要用到的技术是PorterDuffXfermode的PorterDuff.Mode.XOR模式核心思想是先正常绘制出整个drawable,然后将指定的区域混合成透明色看下主要代码代码public void draw(@NonNull Canvas canvas) { //将绘
转载 2024-06-27 07:34:34
44阅读
一开始我便很困惑,TitleBar和ActionBar是什么关系? 我们知道: ActionBar是在android3.3之后推出使用的android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"这意味着Tit
                                 &n
# Android DataBinding 找不到自定义控件 在Android开发中,DataBinding是一个强大的工具,它能帮助开发者以声明性方式绑定UI组件与数据源。尽管DataBinding极为实用,但在使用自定义控件时,开发者有时会遇到“找不到自定义控件”的问题。本文将探讨这一问题的原因以及解决方法,并附带代码示例,帮助你更好地理解和运用AndroidDataBinding。 #
原创 2024-08-27 04:08:39
103阅读
# Android 自定义布局设置布局的实现步骤 ## 概述 在Android开发中,经常会遇到需要自定义布局的情况,这时候就需要使用Android提供的自定义布局功能来实现。本文将介绍如何使用自定义布局来设置布局。 ## 流程图 ```mermaid flowchart TD A[开始] --> B[创建自定义布局类] B --> C[重写onMeasure方法] C
原创 2024-01-27 05:58:18
187阅读
本人是Android开发菜鸟,最近总结了两种自定义AlertDialog对话框的方法,文章或有不足之处,还望各位大神多给高见,勿喷。一下是我自定义的Dialog截图,直接上图(我自己都觉的很丑,不过重要的是方法)方法一:1.首先要定义自己的AlertDialog对话框的资源布局文件mydialog.xml2.为了效使效果更好我们还需要为上述mydialog资源文件中所包含的各种子组件定义样式资源文
转载 2024-05-06 19:52:23
78阅读
目录1.继承ViewGourp派生特殊的Layout构造函数重写方法onMeasure1.测量子元素宽高MeasureSpec是什么2.确定自己大小onLayoutonDraw全部代码2.继承View重写onDraw方法绘制padding和wrap_content 自定义View和自定义ViewGroup的区别在于自定义View主要是实现onMeasure + onDraw(注重绘制)自定义Vi
转载 2023-07-06 11:10:06
154阅读
  • 1
  • 2
  • 3
  • 4
  • 5