
Android学习笔记
文章平均质量分 82
wuzuchang2024
君子坐而论道,少年起而行之。
展开
-
图解混合密码系统
虽然 **非对称加密** 解决了密钥配送问题,但是 **非对称加密** 有两个问题。(1)**非对称加密** 处理速度不如 **对称加密**(2)无法抵御中间人攻击为了解决问题(1)所以有了**混合密码系统**,它结合 **非对称加密** 和 **对称加密** 两者的优势。问题(2)这需要对公钥进行认证(如HTTPS),单靠混合加密系统是无法防止中间人攻击的原创 2022-01-02 14:00:01 · 3768 阅读 · 0 评论 -
Android系统下的文件权限
Android继承了Linux中的文件权限机制,系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为**只读`(r)`**、**只写`(w)`** 和 **可执行`(x)`** 三种方式。原创 2021-12-18 14:34:49 · 7039 阅读 · 0 评论 -
图解DES、3DES和AES加密算法
DES是一种将64bit的明文加密成64bit的密文的对称加密算法。它的密钥长度是56bit。从规格上来讲,DES密钥长度是64bit,但是由于每隔7bit会设置一个用于校验检查的校验位,所以实质上密钥长度是56bit。DES是以64bit的明文为一个单位来进行**分组加密**的,所以**DES**每次只能加密64bit的数据。如果需要加密很长的数据,就需要对**DES**加密进行迭代,而迭代的具体方式就称为**模式**(**ECB**、**CBC**、**CFB**、**OFB**、**CTR**)原创 2021-12-04 13:30:36 · 13404 阅读 · 0 评论 -
Java注解之编译时注解
文章目录AbstractProcessorinit(ProcessingEnvironment processingEnv)ProcessingEnvironmentgetSupportedOptions()getSupportedSourceVersion()getSupportedAnnotationTypes()process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment)ElementAbstract原创 2021-08-08 00:42:04 · 2039 阅读 · 0 评论 -
如何实现自定义注解
注解(Annotation)在Java中,是以@字符开始的修饰符,如我们常见的@Override就是注解。而它的源码如下:@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}可以看到源码很简单,那么这些@Target、 @Retention是什么意思呢?这些在自定义注解上的注解,叫做元注解。元注解Java 中提供了以下元注解类型:@Retention@Targ原创 2021-08-07 11:40:11 · 5025 阅读 · 0 评论 -
Jetpack-Paging使用教程
Jetpack-Paging使用教程一、Paging是什么?Paging 是一个分页库,Paging 可以帮助我们优雅地渐进加载大型数据集合,同时也可以减少网络的使用和系统资源的消耗。在内存中缓存分页数据,确保您的 App 在使用分页数据时有效地使用系统资源。内置删除重复数据的请求,确保您的 App 有效地使用网络带宽和系统资源。可配置当用户滚动到加载数据的末尾时自动请求数据。1.1. Paging版本截止到目前2021-01-17 Paging库现在分为两个版本,其中Pagi原创 2021-01-17 14:57:06 · 1166 阅读 · 0 评论 -
如何实现Android屏幕适配
文章目录一、分辨率适配一、分辨率适配android中的dp和px相互转换的计算公式:px = dp * (dpi / 160)density = dpi / 160px = density * dp而dpi是根据屏幕真实的分辨率和尺寸来计算的,每个设备都可能不一样的。“dpi”=√(宽2+高2 (单位"px" ))/(屏幕尺寸(单位"inch" ))├── src/main│...原创 2020-06-07 17:15:19 · 3158 阅读 · 1 评论 -
解决Android实现圆角效果在Android P以下成黑色
解决Android实现圆角效果在Android P以下成黑色背景项目中测试反馈在Android P以下图片边黑了。看了一下项目代码发现是自定义圆角图片View造成的,review 代码发现实现原理很简单。就是如下图绘制出四个黄色的角,盖在图片上就行了。(PS:图画的比较粗糙,大家见谅)原创 2020-04-04 15:32:15 · 2083 阅读 · 0 评论 -
几种常见的单例模式学习
懒汉式(线程不安全)//只适合单线程环境public class Singleton { private static Singleton instance=null; private Singleton(){} public static Singleton getInstance(){ if(instance==null){ ...原创 2018-01-08 12:03:37 · 365 阅读 · 0 评论 -
BAT大厂面试题
答案只写了Java基础的部分,有空会接着写。答案并不是标准答案,有错的地方还请指正面试题目来中鸿洋大神的微信公众号分享:BAT大厂面试题(一)java面试题(1)java基础面试知识点(2) java深入源码级的面试题(有难度)(3)数据结构(4)线程、多线程和线程池(5)并发编程有关知识点(二)Android面试题(1)Android基础知识点(2)Android...原创 2018-03-06 15:24:37 · 2067 阅读 · 5 评论 -
关于Android Studio配置Gradle
不管是安装Android Studio还是升级Android Studio都会遇到配置Gradle的烦恼。1.配置gradle1.1 默认配置的Gradle第一次安装的AS默认配置是,在setting下gradle下设置gradle选择的是use defalut gradle wrapper(recommended),当选择的是这个时,AS就会根据{project.dir}\gradle\wrap原创 2017-08-25 15:25:23 · 1396 阅读 · 0 评论 -
一款可以一键实现屏幕适配的插件
目录什么是SmallestWidth适配怎么计算SmallestWidth的值怎么确定dimens.xml文件内的值一键生成`values-swdp`文件夹插件什么是SmallestWidth适配SmallestWidth适配也叫做限定符屏幕适配方案,SmallestWidth 翻译成中文就说是最小宽度,也就是更具最小宽度去适配;开发者为了做好适配会在工程中新建一系列 values-sw&l...原创 2019-04-27 00:47:57 · 2399 阅读 · 1 评论 -
如何利用无UI的Fragment实现动态权限申请
文章目录1.关于危险权限2.权限申请官方例子2.1. ContextCompat.checkSelfPermission()2.2. shouldShowRequestPermissionRationale()2.3. requestPermissions()2.4. onRequestPermissionsResult()1.关于危险权限总所周知Android6.0及以上涉及到危险权限需要动...原创 2019-07-07 16:59:34 · 1492 阅读 · 0 评论 -
关于Java垃圾回收机制
文章目录1.概述2.判断对象是否存活的方法2.1.引用计数法2.2.可达性分析算法2.3.什么样的对象才是真正死亡3.垃圾回收算法3.1.标记-清除(Mark-Sweep)算法3.2.复制(Copying)算法3.3.标记-整理(Mark-Compact)算法3.4.分代收集算法4.JVM内存分配4.1.新生代4.2.老年代4.3.永久代1.概述最近在看《深入Java虚拟机》一书,书中讲到关于...原创 2019-07-14 15:59:24 · 747 阅读 · 0 评论 -
手把手教你搭建Android项目组件化架构
文章目录1.1.项目地址:组件化:将app按照业务、功能、等进行划分一个个Module,然后在具体的Module中可以用MVC、MVP、MVVM等架构去具体实现。特点:在打正式app时这些Module是集成在app内的,调试时这些Module又可以变成一个个app模块一对一调试。在2.基础配置统一管理build配置以及组件/集成模式的切换在根目录下新增config.gradle文件...原创 2019-08-04 20:08:27 · 752 阅读 · 0 评论 -
什么是TCP协议的三次握手四次挥手
IP协议、HTTP协议、TCP协议、TCP/IP 协议我们经常遇到,而且初学的时候容易弄混。那么他们之间有什么关系呢?重点内容1、什么是TCP/IP 协议TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、HTTP协议、TCP协议等。而三次握手四次挥手就发生在TCP协议中。TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层。每层都有相应的协议,具体如下图: 下面是从网原创 2018-01-22 11:14:04 · 1266 阅读 · 0 评论 -
利用事件分发机制解决ScrollView嵌套ListView滑动冲突
记得以前面试的时候,面试官问了ScrollView嵌套ListView使用的问题。那么ScrollView嵌套ListView使用会出现什么效果呢? 如布局文件如下:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2016-06-28 21:17:23 · 5836 阅读 · 5 评论 -
如何使用百度天气预报API接口
前些天知道了如何获取数字签名SHA1,那它用来干嘛的呢?今天就来学习一下它的用处。 比如说我们要开发一款基于位置的服务,如地图、天气预报等。我们要用到API Key。百度APL Key申请地址:http://lbsyun.baidu.com/apiconsole/key创建应用 如图: 提交后得到API Key 如图: 接口实例:http://api.map.baidu.com/tele原创 2016-03-05 15:58:27 · 59798 阅读 · 7 评论 -
如何分清JSON解析什么时候该用JSONObject,什么时候该用JSONArray。
前一段时间学习Android解析JSON数据,发现不知道什么时候该用JSONObject,什么时候该用JSONArray。所以通过上网查询了资料,然后整理写下这篇博客。JSONObject: 可以看作是一个json对象,其包含一对(Key/Value)数值。所表现的形式是最外被大括号”{}”包裹,其中的Key和Value被冒号”:”分隔,数据结构为:{key:value,key:value,…}的键原创 2016-03-02 14:45:22 · 5079 阅读 · 0 评论 -
使用LruCache缓存,轻松解决图片过多造成的OOM
Android中一般情况下采取的缓存策略是使用二级缓存,即内存缓存+硬盘缓存—>LruCache+DiskLruCache,二级缓存可以满足大部分的需求了,另外还有个三级缓存(内存缓存+硬盘缓存+网络缓存),其中DiskLruCache就是硬盘缓存转载 2016-05-25 12:18:30 · 2474 阅读 · 0 评论 -
关于使用百度地图SDK报错java.lang.UnsatisfiedLinkError的解决办法
前几天使用百度地图SDK一直报错,导致无法显示百度地图,报错如下: java.lang.UnsatisfiedLinkError: No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create() (tried Java_com_baidu_platfor原创 2016-06-04 15:03:16 · 11677 阅读 · 8 评论 -
如何在Androdi Studio中获取SHA1数字签名和MD5
1. 在AS中打开Treminal窗口,Treminal在AS的下方。如图: 2. 然后进入到.android文件夹(该文件夹一般都在C:\Users\Administrator.android)。 如图: 3. 然后输入keytool命令:keytool -list -v -keystore debug.keystore,回车。 如图: 4. 输入密钥库口令,默认是 androi原创 2016-03-03 18:19:09 · 986 阅读 · 0 评论 -
Android开发实现高德地图定位详解
一、 要实现高德地图定位呢,首先需要做好以下几步准备: 1. 在高德开放平台注册帐号 注册地址:http://lbs.amap.com 2. 在开发中下载Android平台下的 地图SDK和定位SDK文件 进入相关下载下载自己想要的功能或文件,图只是截取了地图SDK的页面,定位SDK也是一样,按自己想要的文件下载。下载完成后解压得到: - 3D地图包解压后原创 2016-05-26 18:40:06 · 38451 阅读 · 18 评论 -
Activity四种启动模式总结
最近在学习《Android开发艺术探索》,所以对所学习到的知识做个总结,就算是做笔记吧。 Activity的启动模式目前有四种,分别是standard、singleTop、singleTask和singleInstance。怎么给Activity的启动模式呢? 一般我们通过AndroidMenifest.xml文件配置,如下所示: <activity ...原创 2016-06-23 20:16:40 · 3402 阅读 · 0 评论 -
使用Viewpager实现带指示器的导航页
先来看一下最终效果1.布局文件如下: <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewp原创 2016-12-11 12:00:49 · 755 阅读 · 0 评论 -
android调用系统照相机拍照,并压缩保存在本地
1.首先拍照和保存文件肯定就需要申请权限 <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 在SDCard中创建与删除文件权限 --> <uses-permiss...原创 2016-11-26 10:33:35 · 8454 阅读 · 2 评论 -
讲一讲Android中View的事件分发机制
点击事件的分发过程由三个很重要的方法来共同完成:dispatchTouchEvent、onInterceptTouchEven和onTouchEvent; * ViewGroup的相关事件有三个:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。 * View的相关事件只有两个:dispatchTouchEvent、onTouchEvent。原创 2017-04-02 16:56:42 · 887 阅读 · 0 评论 -
Android中的序列化Serializable和Parcelable
一简介二Serializable接口三Parcelable接口一、简介IPC是Inter-Process Communication的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程; IPC主要包含三个方面:Serializable接口、Parcelable接口和Binder; Android中可Serializable接口和Parcelable接口来对对象进行序列化原创 2017-06-04 13:52:15 · 804 阅读 · 0 评论 -
Android Studio LibraryModule中引用aar
一、在正常的Module中引用aar步骤是: 1.在Module的build文件中加入如下:repositories { flatDir { dirs 'libs' }}//看网上说这部分,有说加在android标签内的也有说和android同级的//我都试过了,两种都是可以的2.在dependencies标签下加入如下 compile(name: 'aar的原创 2017-07-16 00:54:55 · 3660 阅读 · 0 评论 -
The specified child already has a parent. You must call removeView() on the child's parent first
:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.//看字面意思是子View已经存原创 2017-08-28 16:47:20 · 7052 阅读 · 0 评论 -
Android开发之实现百度地图定位功能
之前写了一篇高德地图定位的,现在写一篇百度的。 关于百度开放平台的注册、SDK的下载和申请APK就不说了,和高德的差不多。那就进入正题,看看如何使用百度地图SDK实现定位功能吧。1. 配置环境导入需要的jar包和so库文件 百度地图SDK点击下载 百度地图定位SDK点击下载 下载完成解压,将需要的jar和so导入到项目中,如图: jar包要在lib文件夹下,so文件要在新建文件夹ar原创 2016-06-05 17:41:17 · 11989 阅读 · 5 评论