随笔分类 - Android
摘要:// 检查外部存储挂载状态 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 检查读取和写入动态权限 if (ActivityCompat.checkSelfPermission(Thi
阅读全文
摘要:图片来源于https://blog.csdn.net/wangsen927/article/details/115914821 1.内部存储 1.1内部存储简单认识 内部存储一般指data/data/包名/... 下的路径 有些人经常把内部存储和运行内存搞混,这完全是两个截然不同的东西。 运行内存(
阅读全文
摘要:接上篇 我终于读懂了Handler(一) 经过上一篇的阅读,相信你对handler已经有了一定的理解。本篇就开始进行实践 1. 多个handler在多线程中的应用 public class HandlerTestActivity extends AppCompatActivity { private
阅读全文
摘要:在Android中提到线程间通信那么一定离不开Handler。那么Android中是如何利用Handler进行线程间通信的? 假如A线程要给B线程发送100条消息。 我们可以这样理解: A线程要做的事情(子线程,通常会伴有耗时操作) 构造消息 发送消息 B线程要做的事情 (主线程, 回调handle
阅读全文
摘要:1. LayoutInflater的作用 把xml文件通过一系列复杂的解析过程转换成我们使用的View对象。 2. LayoutInflater的基本使用 View view = LayoutInflater.from(context).inflate(resourceId, parent, fal
阅读全文
摘要:在Android开发中,图片一直是应用中占据内存最大的一部分,大图加载甚至会直接造成应用的崩溃,而我们日常所需要进行的性能优化图片压缩更是必不可少的一部分,所以合理的应用图片压缩就显得尤为重要。 1. 认识图片内存的计算 如果要压缩一张图片,我们首先要对一张图片大小的构成有一个简单的理解,这里有一张
阅读全文
摘要:###1.绘制圆角边框 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <strok
阅读全文
摘要:有的时候我们做UI上的效果不可避免用到PorterDuff.Mode,官方给出的解释是定义了源图和目标图的合成结果,我们可以理解为两个图片的不同叠加所组成的效果,根据我们日常设计的需求通过算法给出了不同的模式 ###1.概述 官方给出了18种模式 首先来个所有模式的总图。 ####官方demo pu
阅读全文
摘要:####1.线性布局中的对齐(易混淆) 在LinearLayout中: android:gravity用于指定文字在控件中的对齐方式 android:layout_gravity用于指定控件在布局中的对齐方式 当排列方向是horizontal时,水平方向上的长度不是固定的,每添加一个控件,水平方向长
阅读全文
摘要:1.功能菜单介绍 我们先看一下这个简单的菜单栏 1.make project 编译project中的所有模块 2.Run 用于构建应用,并将其部署到模拟器或者真机上面 3.Debug 在调试模式下部署应用,可在代码中设置断点 4.sync project with Gradle files 按照gr
阅读全文
摘要:我们都知道java虚拟机所管理的内存区域包括方法区,堆,虚拟机栈,本地方法栈,程序计数器。 在《深入理解java虚拟机》中,周志明老师对虚拟机栈进行了讲解,但是对本地方法栈却一笔带过。今天我们就来对本地方法栈做下深入...... 首先我们先回顾一下虚拟机栈。 ###1.虚拟机栈 ####1.1虚拟机
阅读全文
摘要:版本 功能 Android 9.0 室内wifi Rtt高精度定位 全面屏的支持 夜间模式 支持多摄像头的开发 电源选项添加截屏按钮 Android 8.1 手机不用时导航按钮变暗 UI更新为"关闭电源"和"重新启动" 自动明暗主题 Toast消息为白色 Andorid 8.0 每次安装第三方应用需
阅读全文
摘要:前言 ###广播按类型分可分为全局广播和本地广播。 全局广播发出的广播可以被任意应用接收,或者接收任意应用的广播。也就是说无论哪个应用内注册了某个全局广播,这个广播发出时该应用都能接收到。 (可以静态注册也可以动态注册) 本地广播只能在应用程序内部进行传递,广播接收器也只能接收内部的广播。 (只能动
阅读全文
摘要:###一、服务的创建 public class Myservice extends Service { @Override public IBinder onBind(Intent intent) { return null; } } 然后在清单文件中注册服务。 <service android:n
阅读全文
摘要:1. EventBus作用 它简化了应用程序内各个组件之间进行通信的复杂度,尤其是避免了fragment间通信的复杂度。假如我们使用广播来通信,略显麻烦,如果传递的数据是实体类,那么还需要序列化。 正是因为EventBus的解耦并且使用方便,开销小(避免实体类数据序列化)才得以广泛应用。 1.1 三
阅读全文
摘要:参考大佬写的文章:https://www.jianshu.com/p/f17f5d981de7 ###1、MVC模式 Model:模型层,根据业务模型建立相关的数据类,同时相关的数据库操作和网络也在Model中进行。 View:视图层,一般用xml文件描述,用于view的展示 Controller:
阅读全文
摘要:###Handler消息机制 定义 Message 线程间通信的数据单元,可通过message携带需要的数据创建对象:Message.obtain(what) Handler Handler是Message的处理器,同时也负责消息的发送和移除工作 发送即时消息:即使发送即时处理 发送延时消息:即时发
阅读全文
摘要:前言:前两天看了自定义控件,其中有一些东西我觉得有必要深入理解一下 以下图为例: getX(),getY()返回的是触摸点A相对于view的位置 getRaw(),getRawY()返回的是触摸点B相对于phone(屏幕)的位置。 scrollTo是将View中的内容移动到指定的坐标x,y处,此x,
阅读全文
摘要:为什么会有自定义控件? 自定义控件实现常用有几种方式? 我们运行一段Android代码,如果用Android本身的控件,在HUAWEI手机上和在小米手机上它的 效果可能会不一样 ; 系统本身的控件不足以满足我们的开发需求 ,就像一个textview控件我们想让它显示出艺术字的效果,系统原生控件不能满
阅读全文