android
文章平均质量分 80
qq_34341338
这个作者很懒,什么都没留下…
展开
-
JUC学习(一)-CAS与Unsafe
CAS与Unsafe参考自:https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html无锁执行者CAS-乐观CAS全程是Compare And Swap,即比较交换;其核心算法:执行函数CAS(V,E,N)其中:V代表要更新的变量E代表预期值N代表新值算法:当V==E时,修改V=N;否则什么都不做。若V!=E即代表此变量在其他线程中进行了更新。Unsafe前言位于sun.mis原创 2020-06-27 23:09:13 · 250 阅读 · 1 评论 -
SpannableString基本用法
前言平常开发中经常遇到一块的文本信息,其中包括不同的Style,比如说某些字体大小、颜色不一致;包含某些网页链接等等。之前我通常使用多个TextView来实现它们,但是过多的TextView不仅很难维护而且在性能消耗上也比较大;因此就有了这篇关于SpannableString的文章。以此记录。什么是SpannableString?This is the class for text who...原创 2019-11-23 10:03:50 · 655 阅读 · 0 评论 -
AsyncTask使用
AsyncTask是一个轻量级的异步任务类。它可以在线程池中执行耗时的后台任务。然后把执行的进度和结果传递给主线程并且在主线程中更新UI。AsyncTask基本介绍本身是一个抽象类:public abstract class AsyncTask<Params, Progress, Result> {}其中参数如下:泛型意义Params异步任务的入参,比...原创 2019-03-18 17:43:13 · 223 阅读 · 0 评论 -
LruCache与DiskLruCache的使用
在前面的Bitmap文章中提到,Bitmap在使用中非常容易出现OOM,而本节主要介绍2个方法对加载多图/大图的情况进行优化,有效的避免OOM。1.LruCache缓存在使用RecyclerView、ListView等加载多图时,屏幕上显示的图片会通过滑动屏幕等事件不断地增加,最终导致OOM。为了保证内存始终维持在一个合理的范围,当item移除屏幕时要对图片进行回收,重新滚入屏幕时又要重新加载...原创 2019-02-26 10:31:38 · 877 阅读 · 1 评论 -
Android-Bitmap的简单使用及其优化
在日常开发中不可避免的都会遇到图片展示的功能,而通常都会使用到Bitmap,且每个程序都有相应的最大运行内存;由于Bitmap所消耗的内存相当的大(超出程序最大运行内存)在加载多、大图的时候非常容易引起OOM。。这篇文章简单介绍Bitmap的优化以及内存的计算方式。如何获取我们当前程序的最大运行内存?int maxMemory = (int) (Runtime.getRuntime().max...原创 2019-02-18 16:59:22 · 237 阅读 · 0 评论 -
Android drawable文件夹那些事
大家都知道Android drawable文件夹是用来放置图片以及selector等等资源的。通常我们创建一个项目自动会创建很多的文件夹比如:mipmap/mipmap-xxhdpi之类的。但是这么多不同后缀的文件夹有什么区别呢?我们来学习一下。1.mipmap系列为了将APP Logo与其他使用的图片资源分割开来,比那与管理注意点与drawable系列一致。2.drawable系列...原创 2019-01-30 17:55:58 · 4427 阅读 · 0 评论 -
Android Handler基本原理及使用
众所周知,Android 不允许在子线程中更新UI;比如在进行下载文件等操作时,需要动态的更新下载的进度呀怎么做呢?我们可以使用RxAndroid等开源框架或者使用Handler来完成它。为什么不允许在子线程中访问UI?因为Android的UI控件不是线程安全的,如果在多线程中并发访问可能会导致UI控件处于不可预期的状态;UI控件上锁后的缺点:让UI访问的逻辑变得复杂;锁机制会降低UI访问效...原创 2019-01-28 15:10:34 · 228 阅读 · 0 评论 -
Android中资源文件小结
参考自:感谢大佬们的帮助1.@类型一:(引用自定义资源)形如:android:xx = &quot;@[package:]type/name&quot;,自定义package:省略例如: android:text=&quot;@string/app_name&quot; android:textColor=&quot;@color/gary&quot;类型二原创 2019-01-18 10:46:22 · 233 阅读 · 0 评论 -
SharedPreferences使用时的注意事项
1.SharedPreferences使用中遇到的问题SharedPreferences是Android存储手段之一,之前的文章也有介绍,有兴趣的可以去历史文章中查看。刚刚到公司实习的第二周,从0开始一个小项目,内心很是慌张;赶紧加紧学习的步伐。在退出登录的逻辑这里出现了点问题。问题:点击退出登录时,清空SharedPreferences中token等用户信息,实际清空失效。最后疯狂G...原创 2018-12-25 21:27:55 · 976 阅读 · 0 评论 -
Android动画详解(三)
我们日常开发中,很多情况下都是在系统原有的View上进行Animator操作的;在Android 3.1之后,开发团队新增了ViewPropertyAnimator类,它是专门针对于View而设计的动画类。于ObjectAnimator/ValueAnimator相比较,它使用及其的简单。1.使用方式ObjectAnimator//透明度 final ObjectAn...原创 2018-12-24 20:52:05 · 387 阅读 · 2 评论 -
Android自定义View基础相关
我们在日常开发过程中,除了使用Google官方提供的控件外,还会自定义View来完成需求;而对于我(小白)来说,肯定是需要从最基础的东西开始了。1.View相关的基础知识坐标系在Android中的坐标系与我们数学中的坐标系有些不同,传统的坐标系如图:而Android的屏幕坐标如下图:由图可以清楚的看出,Android中是以左上角为坐标原点的。角度以及弧度角度与坐标系类似,以...原创 2018-12-27 21:17:29 · 103 阅读 · 0 评论 -
Android自定义View-手势检测(GestureDetector)
Google为了方便我们进行手势检测,早就封装了相关的内容提供我们使用。即Android手势检测,主要就是对GestureDetector类的使用和说明。1.GestureDetectorGestureDetector可以使用MotionEvents检测各种手势和事件。其内部包含四个监听器(三个接口以及一个外部类):接口含义OnGestureListener手势检测:包...原创 2019-02-27 11:26:08 · 948 阅读 · 0 评论 -
Android各个版本对应的API及名称
开发时遇到挺多次的,每次都要去找API对应的版本以及名称,记录一下!最近好忙。。。直接使用Android Studio 设置中搜索SDK,如下图:原创 2019-03-15 10:08:27 · 3001 阅读 · 0 评论 -
DownloadManager的使用-更新APP-兼容8.0
项目中APP的版本更新使用的是Bugly,感觉不好控制。在网上找了许多资料,无意间发现了DownloadManager这个API提供的工具,特此学习并记录一波。DownloadManager介绍DownloadManager是Android2.3(API 9)提供的系统服务,用来处理长时间的下载操作。它可以构建一个后台下载服务,在发生故障或者连接更改、系统重启等情况下自动的处理HTTP连接以...原创 2019-03-21 15:08:24 · 1176 阅读 · 1 评论 -
RemoteViews入门
RemoteViewsRemoteViews表示的是一个View结构,实现了Parceable接口-它可以在其他进程中显示;使用场景:通知、桌面小部件.一、RemoteViews的应用通知桌面小部件通知Step :指定Intent,通过PendingIntent获取pi获取NotificationManager(Android O及以上需设置Channel)通过Chan...原创 2019-08-22 16:58:25 · 233 阅读 · 0 评论 -
Android-XML解析
Android-XML解析常用解析方式(直接上代码没什么好讲的)本例直接从assets文件中读取xml文件。<apps> <app> <id>1</id> <name>Google Maps</name> <version>1.0</version...原创 2019-06-25 09:19:01 · 90 阅读 · 0 评论 -
Android、JS交互
顺应大前端的潮流,Hybrid APP越来越重要,学习一波Android与JavaScript的交互方式。原理:通过WebView这个中间组件来相互调用一些基础的配置:val webSetting = webView.settings // 允许与JS交互webSetting.javaScriptEnabled = true// 允许弹窗webSetting.javaScriptCa...原创 2019-06-10 10:24:20 · 160 阅读 · 0 评论 -
Android View工作原理
前言在Android知识体系中,View扮演了很重要的角色;它是Android在视觉上的呈现,Android本身提供了一套GUI库,但是我们的需求不止于系统自带的GUI,因此我们还需要自定义View。而自定义View过程中我们势必要对View的底层工作原理有所了解。这篇文章就记录一下View的测量、布局、绘制三大流程。1.一些必要的基本概念1.1 ViewRoot和DecorViewVie...原创 2019-05-23 11:32:28 · 174 阅读 · 0 评论 -
Android APT案例
APT(Annotation Processing Tool)即注解处理器,是一种注解处理的工具,用来在编译器扫描以及处理注解。以注解作为桥梁,通过预先设定好的代码规则来生成对应的Java代码。实际开发中有很多开源框架都是用到APT,例如:ButterKnife,Dagger2,EventBus,Spring框架等。APT原理:在注解了某些代码元素(字段、函数、类)后,编译器检查Abstrac...原创 2019-04-02 15:19:22 · 1009 阅读 · 0 评论 -
Android AAC学习(二)
在第一节中主要介绍了Licycle、LiveData以及ViewModel的简单使用,这一节记录一下Room的学习。什么是Room?附上官方文档:https://developer.android.google.cn/training/data-storage/room/index.htmlRoom持久库提供了一个SQLite抽象层,使得我们访问数据更加的稳健,提升数据库性能。能够让用户在...翻译 2019-03-27 11:33:52 · 299 阅读 · 0 评论 -
Android AAC学习(一)
什么是AAC?Google官方DEMO即Android Architecture Components,谷歌在Google I/O 2017上发布的帮助开发者构建易于维护测试/健壮的架构设计方案。它的核心应该是基于观察者模式的,其主要的两大内容就是:生命周期相关的 Lifecycle-aware Components(生命周期感知组件)数据库解决方案 Room组件功能:处理数据持久化...原创 2019-03-22 15:28:28 · 1710 阅读 · 0 评论 -
ConstraintLayout详解
1.介绍约束布局ConstraintLayout本身就是一个ViewGroup,它用来解决布局嵌套过多的问题(嵌套越多,绘制消耗的时间越长),以灵活的方式定位/调整小部件(API 9以上均可使用),相比RelativeLayout更灵活,性能更加的出色,更好的适配屏幕大小不同的机型。Android Studio 2.3开始默认创建Activity是都是使用它。2.使用使用它也非常的简单,高版...原创 2019-03-25 16:46:06 · 251 阅读 · 0 评论 -
Android动画详解(一)
概述一般而言,我们在页面跳转或者加载数据时都是瞬间完成的,这样子会导致用户体验非常的不好;有神马方法能够解决这个问题呢?当然就是这篇文章所记录的动画啦。1.分类android中的动画分为三类,分别如下:补间动画(Tween Animation)也常称为View动画对视图进行一系列的图像变换(平移、旋转、缩放、透明度)产生的动画效果。它只改变View的显示,而对View的响应区域没有影响...原创 2018-12-10 16:14:53 · 241 阅读 · 0 评论 -
Android动画详解(二)
上一篇总结了View动画相关的知识,这一节主要学习Android种的属性动画–也是当前最经常使用的一种动画。它能实现View动画所不能实现的一些动画效果。1.简介属性动画(Property Animation)是在 Android 3.0(API 11)后才提供的一种全新动画模式,它大大解决传统动画的局限性,如:经过动画后,其点击事件的响应区域依然未改变。它具有相当高的灵活性,我们可以通过反射...原创 2018-12-19 21:04:00 · 130 阅读 · 0 评论 -
Android Drawable基础(六)
1.ShapeDrawable可以通俗的理解为通过颜色来构造图形,可以是纯色的图形也可以是具有渐变效果的图形.(可设置圆角等)。语法<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android...原创 2018-09-28 20:08:02 · 144 阅读 · 0 评论 -
Android 序列化对象
1.Serializable接口Serializable是Java提供的一个序列化接口,为对象提供标准的序列化和反序列化操作。内部序列化对象的原理:序列化过程: val shape = Shape(2,"Rec") val out = ObjectOutputStream(FileOutputStream("serializable.txt")) out...原创 2018-10-12 19:25:51 · 960 阅读 · 0 评论 -
Android Drawable基础(五)
1.ClipDrawable(裁剪)ClipDrawable对应于标签< clip >,它可以根据自己当前的level来裁剪另一个Drawable.语法<?xml version="1.0" encoding="utf-8"?><clip xmlns:android="http://schemas.android.com/apk/res/andro...原创 2018-09-27 16:28:46 · 202 阅读 · 0 评论 -
Android Drawable基础(四)
1.TransitionDrawable(渐变资源)他用于显示两个Drawable之间的淡入淡出的效果。原创 2018-09-26 15:50:46 · 118 阅读 · 0 评论 -
RecyclerView使用(一)
概述RecyclerView是什么从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传统的ListView,更加强大和灵活。初步使用的步骤build.gradle中添加所需依赖 implementation 'com.android.support:recyclerview-v7:27.1.1'xml文件中添加控件&...原创 2018-09-20 21:34:47 · 108 阅读 · 0 评论 -
Android Drawable基础(三)
1.StateListDrawable(状态列表)是在 XML 中定义的可绘制对象,它根据对象的状态,使用多个不同的图像来表示同一个图形。例如,Button 小部件可以是多种不同状态(按下、聚焦或这两种状态都不是)中的其中一种,而且可以利用状态列表可绘制对象为每种状态提供不同的背景图片。原创 2018-09-25 11:05:59 · 156 阅读 · 0 评论 -
Android Drawable基础(二)
1.NinePatchDrawable(.9图片)在其中可定义当视图中的内容超出正常图像边界时 Android 缩放的可拉伸区域。此类图像通常指定为至少有一个尺寸设置为 “wrap_content” 的视图的背景,而且当视图扩展以适应内容时,九宫格图像也会扩展以匹配视图的大小。使用新建.9图片新建相应的drawable&lt;?xml version="1.0" encoding=...原创 2018-09-23 14:32:12 · 121 阅读 · 0 评论 -
Android Drawable基础(一)
1.Drawable简介可以在 Canvas 上进行绘制的抽象概念 。它的种类有很多,最常见的颜色和图片都可以是一个Drawable 。1.一种可以在Canvas上进行绘制的抽象的概念2.颜色、图片等都可以是一个Drawable3.Drawable可以通过XML定义,或者通过代码创建4.Android中Drawable是一个抽象类,每个具体的Drawable都是其子类2.Drawa...原创 2018-09-23 13:49:12 · 194 阅读 · 0 评论 -
Android自定义UI(HeaderBar)
今天初步了解自定义UI的流程,作此纪录。一.自定义UI好处:1.节省开发时间2.避免重复开发布局二.简单介绍2种方式第一种1.动态添加控件(相比另一种方式来说较难) -流程: --res/values下新增attr.xml文件,用来存放自定义view的属性&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quo原创 2018-09-17 17:17:49 · 798 阅读 · 0 评论 -
Android四大组件之Activity-生命周期
一. Android 四大组件包括Activity 活动Service 服务Broadcast Receiver 广播接收者Content Provider 内容提供者1.什么是Activity?用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮...原创 2018-10-08 21:19:55 · 327 阅读 · 0 评论 -
Android IPC机制(1)
前言本系列主要介绍Android的IPC机制,Android中多进程的概念以及多进程开发的注意事项,进程间通信的方式等。1.IPC简介IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,指两个进程间进行数据交换的过程。Android中一般指两个APP间的数据传递。提到进程,首先要理解什么是进程,什么是线程:线程: CPU调度的最小单...原创 2018-10-15 21:15:11 · 169 阅读 · 0 评论 -
Android四大组件之Activity-启动模式
1.Activity的启动模式当我们多次调用同一个Activity时,系统会重复创建多个实例并把它们一一放入任务栈中,这种方式显然不符合我们的设计要求。所以Android在设计时就提供了四种启动模式来解决此问题。四种启动模式分别如下:standard-标准模式也是默认模式每次启动一个Activity都会创建新的实例并压入任务栈,onCreate,onStart,onResume都会被调用...原创 2018-10-09 20:48:49 · 383 阅读 · 0 评论 -
Android四大组件之BroadcastReceiver
1.BroadcastReceiver简介BroadcastReceiver翻译为广播接收者,广播是一种用于程序之间进行信息传输的机制。是典型的发布-订阅模式。2.分类标准广播(Normal Broadcasts):完全异步,在同一时刻能被所有广播接收者收到(他们之间没有任何先后顺序),消息传递的效率相对高;但是接收者无法将处理结果传递给下一个接收者,且无法拦截广播Intent的传递。工...原创 2018-12-08 17:38:06 · 166 阅读 · 2 评论 -
Android四大组件之ContentProvider(一)
1.什么是ContentProvider?内容提供程序管理对数据结构化数据集的访问。它们封装数据,并提供用于定义数据安全性的机制。内容提供者是连接一个进程中的数据与另一个进程中运行的代码的标准界面。是不同应用程序之间进行数据交换的标准API,以某种Uri的形式对外提供数据,允许其他应用访问或修改数据;其他程序使用ContentResolver根据Uri去访问操作指定的数据。是IPC通信的...原创 2018-11-17 19:32:57 · 579 阅读 · 0 评论 -
Android数据存储的方式
1.Android常用的数据存储方式File存储SharedPreferences存储SQLite轻量型数据库ContentProvider 四大组件之一2.File存储最基本的一种数据存储方式,不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件中,适合存储一些简单的文本数据或二进制数据。存储的数据位于/data/data/&lt; package name&gt...原创 2018-11-14 17:03:32 · 5955 阅读 · 0 评论 -
Android四大组件之ContentProvider(二)
上节提到的四大组件之ContentProvider的简单使用,在这篇文章中详细的介绍其中的一些方法。1.String getType(Uri uri)方法首先看看官方对它的解释: /** * Implement this to handle requests for the MIME type of the data at the * given URI. The...原创 2018-11-18 17:50:37 · 168 阅读 · 0 评论