自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android 插件化换肤方案

实现流程实现LayoutInflater.Factory2这个接口,实现onCreateView方法(主要仿照系统原来LayoutInflater.createView()方法的实现),此处可以拿到页面中所有的View,判断有没有需要换肤的View,并且保存下来;在Activity创建成功后,setContentView()前把我们自定义的Factory2设置给当前Activity的LayoutInflater,这样LayoutInflater在加载View的时候就会使用我们自定义的Factory2来加

2022-06-15 10:17:21 490 1

原创 Jetpack Compose之LazyCoumn - 类似RecyclerView

LazyCoumn是一个类似ListView和RecyclerView的View,LazyColumn仅会呈现屏幕上的可见项目,从而在呈现大列表时提高性能。它可以添加单个item或者传入数据集合,添加多个Item,它的使用方法很简单,不需要像原来一样使用Adapter://定义数据集合val itemsList = (0..20).toList()val itemsIndexedList = listOf("A", "B", "C")LazyColumn { //添加多个item,回调中没

2021-12-08 14:30:46 1469

原创 Jetpack Compose布局之Row

基本使用Row纵向线性布局,类似于LinearLayout设置为android:orientation="horizontal"时的效果:Row() { Text(text = "千里之行,") Text(text = "始于足下")}上方两个Text将按照垂直排列布局,Row默认大小为内部子控件的大小,类似于wrap_content大小调整可以使用modifier来设置Row的大小:Row(modifier = Modifier .height(200.dp).

2021-12-02 10:35:22 5564 2

原创 Jetpack Compose 之 Button

基本使用Compose本身没有给我提供Button,但是Material Design库给我提供了很多中样式的Button:Button(onClick = { Log.i(TAG_B,"button点击了") }) { //button的内容 Text(text = "点我点我")}参数onClick传入一个lambda,在按钮被点击时调用,按钮内容需要在下方自己定义,这里接收的是一个视图函数,我们可以随意的编写enabledenabled参数可以设置按钮是否可用,fal.

2021-12-01 17:26:04 950

原创 Jetpack Compose布局之Column

基本使用Column纵向线性布局,类似于LinearLayout设置为android:orientation="vertical"时的效果:Column() { Text(text = "千里之行") Text(text = "始于足下")}上方两个Text将按照垂直排列布局,Column默认大小为内部子控件的大小,类似于wrap_content大小调整可以使用modifier来设置Column的大小:Column(modifier = Modifier .hei.

2021-12-01 17:21:53 5036 1

原创 jetpack compose 之 TextField 文本输入框

基本使用TextField用来显示一个输入框,它是Material Design库提供的,具有Material Design风格:TextField( value = "", onValueChange = { })创建TextField有两个必传的参数,value输入框默认值,onValueChage输入框文本改变事件,在文本改变时,会回调这个方法;此时创建的TextField运行后你会发现输入内容只会回调onValueChage这个方法,TextField上没有任何.

2021-11-26 10:27:58 2462

原创 Jetpack Compose Image加载网络图片

在Jetpack Compose中加载网络图片,现在只能使用 Coil这个库!!!且accompanist在几个月之前就弃用了Guild和 Coli库 弃用Guild和Coli!!!现在大多数文章都是错的,且几乎没有文章指出这个问题!!!!...

2021-11-24 11:32:07 4718

原创 Jetpack Compose 之 Image

基本使用Image 用来显示一张图片,Image有三个构造方法:传入一个bitmap:ImageBitmap;Image(bitmap = ImageBitmap.imageResource(id = R.mipmap.ic_launcher), contentDescription = "icon")传入一个imageVector: ImageVector矢量图片;​painter 图片资源,使用painterResource来获取drawable或者mipmap下的图片,.

2021-11-23 16:58:29 1822 1

原创 Jetpack Compose之Text

基本使用Text是显示文本的组件,最常用的组件,都没有之一,text参数是必须要传的,其它的可以为空。基本用法如下:Text(text = "ping 老师很帅")通常我们都会把文字放到string.xml文件里面,在Compose的Text里面,需要使用stringResource(id)来获取string.xml里面的值:Text(text = stringResource(id = R.string.ping))color设置color参数可以调整text的文字颜色Text(te.

2021-11-23 16:19:58 2135

原创 自定义ViewGroup之MeasureSpec

撒旦发射点发射点

2021-08-22 17:03:47 126

原创 Android 自定义ViewGroup之FlowLayout流式布局

简介       Android自定义View,ViewGroup是在开发中使用的比较多的,学习和掌握自定View,是中高级开发必须掌握的技能,本文使用一个自定义FlowLayout,来介绍自定义ViewGroup的流程与需要注意的地方实践我们先来看看最后的实现效果接下来我们来实现这个效果,首先我们新建一个类,继承至ViewGroup,并且重写其onMeasure和onLayout两个方法,ViewGroup有4个构造方

2021-08-11 17:30:42 241

原创 Android Java 注解

1.简介Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。 注解对于代码的运行效果没有直接影响。个人理解:注解就是给代码加上标记,这个标记可以在编译时、运行时获取到,从而可以让我们对打标记的代码在编译或者运行时进行处理。注解本身没有任何意义,单独的注解就是一种注释,它需要结合其它如反射、插桩等技术才有意义2.定义注解注解和接口的定义一样,使用interface关键词,不过需要在关键词前加上@public @interface Chxip {

2021-08-02 13:45:08 196

转载 Flutter 扩展函数

Extension methods 就是我们常说的扩展函数,像 Kotlin 等语言也有 扩展函数 的特性,因此如果你了解其他语言的扩展函数,Dart 中的扩展函数与其他语言基本一致。扩展函数最低版本要求:environment: sdk: ">=2.7.0 <3.0.0"注意:空安全的最低版本是 2.12.0。基础那么什么是扩展函数?简单理解,扩展函数就是在现有的库或者类中扩展一个函数,比如,我们希望将一个整数字符串转换为 int 类型整数,正常情况下,实现如下:int.p

2021-04-20 17:03:49 891

原创 Flutter Fish_Redux 框架 reducer 层的方法不执行

1. 产生的原因我在action里面定义了一个login 事件enum LoginAction { login,//登录事件 }class LoginActionCreator { static Action onLogin(){ return const Action(LoginAction.login); } }在effect里面处理了这个登录事件Effect<LoginState> buildEffect() { return comb

2021-03-22 09:28:04 224

原创 Flutter fish_redux 框架 SourceFlowAdapter的使用

1. 简介fish_redux 是阿里咸鱼开源的flutter框架,用于页面拆分,模块拆分及跨组件通讯的,里面给ListView 提供了Adapter的功能,但是实现对于初学者来说很难理解。阅读本文章需要掌握fish_redux的基本使用新版本中框架提供了4中adapterSourceFlowAdapter //Model数组类型驱动StaticFlowAdapter //以Map数据类型驱动的DynamicFlowAdapter//Model数组类型驱动 已被弃用,SourceFlowAdap

2021-03-19 19:19:36 485

原创 Android 强制使用移动网络访问接口

1. 场景最近项目中加入了手机号一键登录的功能,选用的是中国移动的一键认证SDK,在手机连接上WiFi同时又打开移动流量的时候,发现SDK获取不到手机号,提示当前网络环境获取不到,通过查阅SDK才知道,需要用移动流量访问SDK 才可以拿到手机号,所以在获取手机号时,需要使用移动流量来获取2. 步骤先在项目中添加权限//允许程序改变网络连接状态<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/&g

2021-01-22 16:39:20 2776 8

原创 Android Jetpack之DataBinding

2020-12-25 15:57:02 172

原创 自定义网易云播放页面

首先我们先来看看最终的效果现在我们来一步一步实现这个效果首先我们先自定义VIew,把唱片背景图画上去,代码很简单定义一个Bitmap变量,保存唱片图片,在初始化方法中获取唱片图片//获取唱片图片BitmapmDiscBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.play_page_disc);//转换图片大小mDiscBitmap = ImageUtils.resizeImage(mDiscBitmap,

2020-12-23 17:26:10 987

转载 Android监听软键盘的显示与隐藏

核心原理: 判断根布局的可视区域与屏幕底部的差值,如果这个差大于某个值,可以认定键盘弹起了 代码: //判断软键盘是否弹出 private boolean isKeyboardShown(View rootView) { // 键盘高度的最小值 可根据需要自己设置 final int softKeyboardHeight = 50;

2016-05-17 15:59:09 250

Android 省 市 县 三级联动

Android省、市、县、三级联动,效果比较好,分享一下

2015-09-29

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除