- 博客(57)
- 收藏
- 关注
原创 LruCache、Glide和SmartRefreshLayout使用总结
1>Glide4中占位图的使用方法,包括(placeholder,error,fallback)三种占位图,一般在请求网络图片的时候使用。fallback:如果请求的url/model为null的时候展示的图片(如果没有设置,还是展示paceholder的占位符)Glide是一个快速高效的Android图片加载库,可以自动加载网络,本地文件,app资源中的图片。error:如果请求失败的时候展示的图片(如果没有设置,还是展示placeholder的占位符)使用它可以进行图片的内存缓存。
2024-07-09 15:36:34 443
原创 C++(3)
可以将RAM当做宿舍里成排 存物柜,每个存物柜都有编号,即地址,要访问特定的内存单元,如内存单元578,需要使用指令要求处理器从这里获取值或将值写入到这里。注意:需要时再声明变量通常是更好的选择,因为这让代码更容易理解,存储在变量中的饿数据被存储在内存中,应用程序终止时,这样的数据将丢失。变量类型向编译器指出了变量可存储的数据的性质,编译器将为变量预留必要的空间,变量名由程序员选择,它替代了变量值在内存中的存储地址。访问数组时,如果超越其边界,结果将是无法预料的,在很多情况下,这将导致程序崩溃。
2023-06-12 19:39:51 1032
原创 自定义View学习笔记(一)
View 是Android 所有控件的基类,textview等都继承view,而LinearLayout,它继承ViewGroup
2022-07-05 21:54:04 409
原创 学习MVVM笔记(一)
model :数据层,包含数据实体和对数据实体的操作View :界面层,对应Activity XML view 负责数据显示以及用户交互ViewModel :关联层 将model 和view 进行绑定,model或者View 更改时,实时刷新对方注意:1.View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开2.ViewModel只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。DataBinding 是谷歌官方推荐的一个库
2022-06-30 22:00:13 392
原创 Json的基本使用
Json是什么?是一种轻量级的数据交换格式,与XML一样,被采用的客户端和服务端交互的解决方案,具有良好的可读和便于快速编写的特性。Json的格式规范:就像协议一样,json肯定也会有一套规范的规则。数据在名称/值对中,数据由逗号分隔开,花括号保存对象,方括号保存数组。比如:[{ “id”:“1”,“name”:“基神”,“age”:“18” },{ “id”:“2”,“name”:“B神”,“age”:“18” },{ “id”:“3”,“name”:“曹神”,“age”:“18” }
2022-05-12 23:15:27 601
原创 OTA调试
a、如何确认AB升级当前分区通过查看 ro.boot.slot_suffix 属性值的方式,这个属性值显示当前使用分区名b、如何手动切换分区通过进入bootloader 模式,指定启动槽值来选择下次启动的分区,按照如下指令即可adb reboot bootloaderfastboot --set-active=afastboot rebootc、如何判断失败原因升级结束时,可以看到有个错误码,常见错误码如下,按照错误码去查找可能原因ErrorCode::kSuccess (0) 升级成功
2022-03-22 19:49:26 2340
原创 网络监听工具类
public class NetUtils { private static Context mContext; /** * getActiveNetworkInfo() 返回NetworkInfo,当前网络连接的信息 * * getNetworkInfo(int networkType) 返回一个指定网络的连接信息 * * getNetworkPreference() 返回首选网络连接的网络类型 * * setNet
2022-03-18 09:19:21 906
原创 C++(1)
#include<iostream>using namespace std;int main(){ cout << "hello world"; return 0;} 上面是C++的第一个程序分析:#include<iostream>(1)为预处理命令,其中 <> 中的为头文件(提供输入/输出的所需要的一些信息)//为命名空间using namespace std;//可以通过#include"std",表示要用到命名空间std中内
2022-03-08 23:46:00 1124
原创 android 中的多线程实现方式
AsyncTask:实现多线程,在工作线程中执行任务,如耗时任务它属于抽象类public abstract class AsyncTask<Params, Progress, Result> {…}// 类中参数为3种泛型类型// 整体作用:控制AsyncTask子类执行线程任务时各个阶段的返回类型// 具体说明:// a. Params:开始异步任务执行时传入的参数类型,对应excute()中传递的参数// b. Progress:异步任务执行过程中,返回下载进度值的类型
2022-03-08 19:57:21 3209
原创 Socket通信
首先先了解一些基础知识点网络协议有几层?七层物理层,数据链路层,网路层(路由:数据包),传输层(TCP传输协议与UDP用户数据报协议),会话层,表示层,应用层IP地址:唯一的标识(为了实现网络中不同终端之间的通信,每个终端都必须有一个唯一的标识)端口:(1)用来区分不同的应用程序(2)端口号的范围065535,其中01023为系统的保留端口,我们的程序尽量不使用这些端口(3)IP地址和端口号组成了我们的SocketTCP协议 和 UDP 协议的比较TCP:传输控制协议三次握手 :建立一
2022-02-27 21:56:17 2133
原创 java使用 AES-128-cbc 加解密
首先介绍相关的几个重要的类:(一)KeyGeneratorJava提供了一个名称为KeyGenerator的类,该类用于生成密钥,此类的对象是可重用的。要使用KeyGenerator类生成密钥,请按照以下步骤操作第1步:创建KeyGenerator对象KeyGenerator类提供getInstance()方法,该方法接受表示所需密钥生成算法的String变量,并返回生成密钥的KeyGenerator对象。第2步:创建SecureRandom对象java.Security包的SecureRand
2022-02-27 00:52:02 5339 1
原创 android File操作
Context 提供两个方法来打开应用程序的数据文件夹里的文件IO流体系。FileInputStream openFileInput(String name):打开应用程序的数据文件夹下的name文件对应的输入流FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应的输出流其中:mode 有如下几个值:(1)MODE_PRIVATE :该文件只能被当前程序所读写(2)MODE_APPEND :以追
2021-12-14 22:01:16 2656
原创 修改EditText下划线
<TimePicker android:id="@+id/lala" android:timePickerMode="spinner" android:theme="@style/MyTime" android:layout_width="wrap_content" android:layout_height="wrap_content"></TimePicker> style属性:
2021-11-22 22:14:12 1564
原创 Android studio 控制台输出中文乱码
解决办法,在java工程目录下的build.gradle添加如下代码,然后重新运行一遍。tasks.withType(JavaCompile) {options.encoding = “UTF-8”}
2021-11-21 11:10:20 1825
原创 通过反射修改TimePicker
private void getTime(){ Resources resources = Resources.getSystem(); int hour = resources.getIdentifier("hour", "id", "android"); int min = resources.getIdentifier("minute", "id", "android"); NumberPicker mHourNumberPicker =
2021-11-21 08:31:16 1389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人