自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Android HandlerThread

在Android中,工作线程是不能直接使用Handler的。

2021-06-15 04:05:56 601 4

原创 Android Handler机制

Handler是什么在Android中,UI线程不能执行耗时操作,否则可能会出现ARN。而子线程是不能更新UI的。如果我们在子线程中操作UI,程序会抛出异常。这个时候就需要我们在子线程完成耗时操作后来通知UI线程来更新UI。Handler就是用来在线程间通信。Handler机制几个比较相关的类Handler 用于创建消息,发送消息,处理消息,删除消息Looper 内部维护了一个MessageQueue(消息队列),Handler发送的消息会发送到这个消息队列里MessageQueue 消息...

2021-06-12 01:22:01 249 3

原创 Android 过渡动画(Transition)

在Android5.0之前,如果我们需要改变默认的Activity切换动画。可能需要在startActivity()之后,添加一个overridePendingTransition()方法。overridePendingTransition()

2021-06-04 17:42:44 2819 1

原创 Android Bitmap

Bitmap是什么Bitmap是一个位图对象,他存储了图片所有的像素信息。如何获取一个Bitmap对象在Android中,要想获得一个Bitmap对象,最主要有两种方法。1.通过BitmapFactory这个工厂类,来从各种渠道解析出一个Bitmap对象。//从资源文件解析出一个Bitmap对象val bitmap = BitmapFactory.decodeResource(resources, R.drawable.bitmap)2.通过Bitmap的静态createBitmap(

2021-05-21 12:39:52 266 2

原创 Android AsyncTask 使用

AsyncTask是一个简单的异步任务处理类。使用AsyncTaskAsyncTask是一个抽象类,要想使用必须创建一个AsyncTask的子类,并覆盖一些必要的方法。/** * Params 代表执行时发给任务的参数类型 * Progress 后台任务执行中发布的任务进度的类型 * Result 任务完成后返回的结果类型 */class MyTask : AsyncTask<Params, Progress, Result>() { override fun on

2021-05-14 08:16:01 82 1

原创 Android 使用Canvas绘制Bitmap相关

我们在Canvas上绘制Bitmap时,常常会使用到的API是//绘制Bitmappublic void drawBitmap(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint)一.确认Bitmap绘制的位置上面绘制Bitmap方法是从左上角(left,top)开始绘制。Bitmap多大,绘制出来的图像就有多大。主要代码如下:val mPaint = Paint(Paint.ANTI_ALIAS_FL

2021-05-14 05:09:00 3025 1

原创 Android 使用Canvas绘制文本相关

我们在自定义View的时候,常常需要在Canvas上绘制文本。而我们在绘制文本时主要使用的API是//绘制文本public void drawText(@NonNull String text, float x, float y, @NonNull Paint paint)上面这个方法中,text为文本内容,x为绘制文本时的对齐方式的X坐标,y为绘制文本时基线的Y坐标,paint为绘制文本的画笔。...

2021-05-12 08:52:59 509

原创 Android 绘图之Paint

Paint是什么Paint是一个画笔,它保存了如何绘制几何图形,文本,和位图的样式和颜色等信息如何获得一个Paint对象调用Paint的构造方法可以创建一个画笔对象.//创建一个拥有抗锯齿功能的画笔val paint = Paint(Paint.ANTI_ALIAS_FLAG)设置PaintPaint类拥有大量的setXXX()方法,这些方法可用于在绘图操作中对画笔的各种属性进行设置.常用的一些方法有 paint.setColor(int color) 设置画笔颜色,(从资源...

2021-05-06 01:53:46 789

原创 Android 绘图之Canvas

其实Android绘图和我们人类绘画很相似,首先我们绘画需要一张纸,我们要在这张纸上面绘画,我们还需要一支笔,用这支笔在纸上绘画,我们还需要知道自己想画什么,正方形?三角形?还是别的什么图形。在Android中,绘画用的纸是一个Canvas对象。一般被称作画布。在Android中,想要获得一张纸(Canvas)主要有三种方法。一 继承一个View对象,并重写onDraw()方法。View的...

2021-05-06 01:46:33 4020

原创 Android TextView的各种Span

首先Span是什么Span是功能强大的标记对象,可用于在字符或段落级别的文本设置样式.我们可以将该标记对象添加到文本上,从而可以改变文本的颜色,使文本可点击,缩放文本大小等等.创建Span创建一个Span,可以使用以下三个类SpannedString 使用该类创建的Span对象不可以改变文本,不可以改变标记.很少使用到.SpannableString 使用该类创建的Span对象不可改变文本,可以改变标记,一般在不修改文本内容,只修改文本标记的情况下(比如修改文本的颜色等)应该使用该类.Spann..

2021-04-20 15:52:56 1319

原创 Android 布局优化之<include/><merge/>和 <ViewStub>

通过标记重复使用布局在Android开发中,通常需要重复使用特殊布局的大型组件,比如标题栏.创建一个可重复使用的布局 include_toolbar.xml 包含一个Toolbar,Toolbar里面包含了一个TextView<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

2021-04-15 17:13:59 213

原创 Android jetpack 之 LiveData

首先,LiveData是什么LiveData是一种可以被观察的数据存储器类,它可以感知其他组件(比如Activity,Fragment)的生命周期,并只更新处于活跃状态的组件. 当我们的应用组件处于 STARTED 或 RESUMED 状态,LiveData则会认为该组件处于活跃状态开始使用LiveData,LiveData一般搭配ViewModel一起使用首先我们会创建一个ViewModel,在ViewModel里面在创建LiveData,并提供getter方法进行访问.class Name

2021-04-11 13:48:35 142

原创 Android jetpack 之 ViewModel

首先,ViewModel是什么.ViewModel是一个以注重生命周期存储和管理界面相关数据的类.ViewModel可以让数据在发生如屏幕旋转等配置更改后继续存留.比如我现在在Activity里定义了一个Int型的变量x初始化为0.在Activity运行期间,我点击了一个按钮让x的值变为1. 假如此时我旋转,等屏幕旋转后,Activity重建.那x的值会被重新设置为0.现在我们使用ViewModel,让x的值在屏幕旋转之后还是1开始使用ViewModel实现一个ViewModel我们可以创建一个类

2021-04-09 16:05:37 221 1

原创 Android 菜单Menu

菜单是很多应用都会用到的组件,在Android系统中,菜单主要分为三类. 选项菜单 上下文菜单 弹出菜单一 选项菜单 选项菜单是Activity的主菜单项集合.提供对应用产生全局影响的操作,比如:"设置", ''搜索"等定义一个菜单,Android 推荐使用xml文件的方式来定义一个菜单.在项目的res/menu/目录内创建xml文件<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://sc...

2021-04-04 04:49:20 252

原创 Android 动画之属性动画(Property Animation)

Property Animation是谷歌在Android3.0的时候引入的,这个动画改变的是对象的实际属性,在视图动画(View Animation)中,只是视图绘制的位置,而不是实际视图本身.Property Animation允许我们定义动画的下列特征:Duration: 动画的持续时间,默认为300ms. Time interpolat...

2020-01-21 06:38:00 262

原创 Android动画之帧动画(Frame Animation)

帧动画是一种把一系列可绘制的资源一个接一个的加载出来的动画,这是一种传统的动画,从某种意义上来说,他是由一系列不同的图像组成的,按照顺序播放,看起来就像一卷电影.AnimationDrawable类是动画绘制的基础.帧动画可以通过一个简单的xml文件来完成,该文件列出了组成动画的框架,存放在res/drawable目录中.在这种情况下,指令是动画的每个帧的顺序和持续时间.xml文件由&lt...

2018-11-02 15:29:50 158

原创 Android 动画之补间动画(View Animation)

Android 中补间动画包括下面四种:1.透明度动画 (AlphaAnimation)2.缩放动画 (ScaleAnimation)3.平移动画 (TranslateAnimation)4.旋转动画 (RotateAnimation)补间动画是专门针对View 的。只能应用于View。具体使用AlphaAnimation补间动画可以使用Java代码创建也可以使用...

2018-10-19 18:20:00 1813

原创 Android 自定义View时 getDimension, getDimensionPixelOffset, getDimensionPixelSize 三个方法的区别

getDimension 的源码如下public float getDimension(@StyleableRes int index, float defValue) { if (mRecycled) { throw new RuntimeException("Cannot make calls to a recycled instance!"); } ...

2018-09-20 13:56:22 1339 1

原创 Android Activity的任务返回栈和启动模式

一个Android应用通常包括多个Activity,这些Activity通力合作,提供一个完整的用户体验。一个Activity可以启动别的Activity,甚至可以启动别的应用程序的Activity。这看起来就好像别的应用程序的Activity是你的应用的一部分。即使这两个Activity来自不同的应用程序,Android系统仍然会将Activity保存在相同的任务中。以维护一个无缝的用户体验。任...

2018-04-11 20:34:59 519

原创 Android 对话框(Dialog)

对话框是提示用户做出决定或输入额外事件的小窗口。对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。Dialog类是对话框的基类,我们可以使用Dialog来构建一个对话框。但Android建议避免直接使用Dialog,而应该使用其子类。下面是一些Dialog的子类实现:AlertDialog 一个可以显示标题,可选项列表或自定义布局,最多还可以显示三个按钮的对话框。Da...

2018-04-10 01:50:06 3512

原创 Android 数据存储SharedPreferences

SharedPreferences是Android中的一种轻量级的存储方式,它的本质是基于xml文件的键值对数据,通常用来保存一些基本的配置信息。其存储的位置位于data/data/(packageName)/shared_prefs目录下。我们可以使用SharedPreferences来保存任何原始数据,包括布尔值,浮点值,整形值,长整型和字符串!获取SharedPreferences要...

2018-03-29 12:52:47 151

原创 Android Vibrator(震动服务)

Android手机震动主要用到的类是Vibrator类。该类作为一个系统级的服务类,可以通过Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);来获得实例。该类主要包含的方法如下:public boolean hasVibrator(); 判断是否在震动;public void v...

2018-03-29 00:48:23 2216

原创 Android 解析xml 文件

xml 文件在各种开发中都广泛应用.Android中也不例外.作为承载数据的一个重要角色.如何读写xml成为一项十分重要的技能.在Android中,常见的xml解析器分为DOM解析器,SAX解析器,PULL解析器.将该xml文件放置在assets目录中.<?xml version="1.0" encoding="utf-8"?><persons> &...

2018-03-28 15:08:00 5477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除