![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 79
Ping_xp
一名程序员
展开
-
Android 插件化换肤方案
实现流程实现LayoutInflater.Factory2这个接口,实现onCreateView方法(主要仿照系统原来LayoutInflater.createView()方法的实现),此处可以拿到页面中所有的View,判断有没有需要换肤的View,并且保存下来;在Activity创建成功后,setContentView()前把我们自定义的Factory2设置给当前Activity的LayoutInflater,这样LayoutInflater在加载View的时候就会使用我们自定义的Factory2来加原创 2022-06-15 10:17:21 · 532 阅读 · 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 · 1626 阅读 · 0 评论 -
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 · 6864 阅读 · 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 · 1055 阅读 · 0 评论 -
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 · 5709 阅读 · 1 评论 -
jetpack compose 之 TextField 文本输入框
基本使用TextField用来显示一个输入框,它是Material Design库提供的,具有Material Design风格:TextField( value = "", onValueChange = { })创建TextField有两个必传的参数,value输入框默认值,onValueChage输入框文本改变事件,在文本改变时,会回调这个方法;此时创建的TextField运行后你会发现输入内容只会回调onValueChage这个方法,TextField上没有任何.原创 2021-11-26 10:27:58 · 2833 阅读 · 0 评论 -
Jetpack Compose Image加载网络图片
在Jetpack Compose中加载网络图片,现在只能使用 Coil这个库!!!且accompanist在几个月之前就弃用了Guild和 Coli库 弃用Guild和Coli!!!现在大多数文章都是错的,且几乎没有文章指出这个问题!!!!...原创 2021-11-24 11:32:07 · 5109 阅读 · 0 评论 -
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 · 2134 阅读 · 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 · 2243 阅读 · 0 评论 -
Android 自定义ViewGroup之FlowLayout流式布局
简介 Android自定义View,ViewGroup是在开发中使用的比较多的,学习和掌握自定View,是中高级开发必须掌握的技能,本文使用一个自定义FlowLayout,来介绍自定义ViewGroup的流程与需要注意的地方实践我们先来看看最后的实现效果接下来我们来实现这个效果,首先我们新建一个类,继承至ViewGroup,并且重写其onMeasure和onLayout两个方法,ViewGroup有4个构造方原创 2021-08-11 17:30:42 · 262 阅读 · 0 评论 -
Android Java 注解
1.简介Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。 注解对于代码的运行效果没有直接影响。个人理解:注解就是给代码加上标记,这个标记可以在编译时、运行时获取到,从而可以让我们对打标记的代码在编译或者运行时进行处理。注解本身没有任何意义,单独的注解就是一种注释,它需要结合其它如反射、插桩等技术才有意义2.定义注解注解和接口的定义一样,使用interface关键词,不过需要在关键词前加上@public @interface Chxip {原创 2021-08-02 13:45:08 · 217 阅读 · 0 评论 -
Android 强制使用移动网络访问接口
1. 场景最近项目中加入了手机号一键登录的功能,选用的是中国移动的一键认证SDK,在手机连接上WiFi同时又打开移动流量的时候,发现SDK获取不到手机号,提示当前网络环境获取不到,通过查阅SDK才知道,需要用移动流量访问SDK 才可以拿到手机号,所以在获取手机号时,需要使用移动流量来获取2. 步骤先在项目中添加权限//允许程序改变网络连接状态<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/&g原创 2021-01-22 16:39:20 · 3074 阅读 · 8 评论 -
Android Jetpack之DataBinding
原创 2020-12-25 15:57:02 · 189 阅读 · 0 评论 -
自定义网易云播放页面
首先我们先来看看最终的效果现在我们来一步一步实现这个效果首先我们先自定义VIew,把唱片背景图画上去,代码很简单定义一个Bitmap变量,保存唱片图片,在初始化方法中获取唱片图片//获取唱片图片BitmapmDiscBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.play_page_disc);//转换图片大小mDiscBitmap = ImageUtils.resizeImage(mDiscBitmap,原创 2020-12-23 17:26:10 · 1056 阅读 · 0 评论 -
Android监听软键盘的显示与隐藏
核心原理: 判断根布局的可视区域与屏幕底部的差值,如果这个差大于某个值,可以认定键盘弹起了 代码: //判断软键盘是否弹出 private boolean isKeyboardShown(View rootView) { // 键盘高度的最小值 可根据需要自己设置 final int softKeyboardHeight = 50;转载 2016-05-17 15:59:09 · 259 阅读 · 0 评论