
Android
亮晶晶的无心
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hilt依赖注入
控制反转(IOC)如果一个类A 的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多,每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control)。控制反转是一种思想,是能够解决问题的一种可能的结果原创 2020-12-16 23:02:24 · 1096 阅读 · 0 评论 -
Service学习以及BindService的使用
Service什么是ServiceService是一个可以在后台执行长时间操作而不使用用户界面的应用组件。如何使用Service我们首先需要实现一个Service的子类。主要实现Service的onCreat(),onStartCommand(),onBind(),onDesroy(),其中onBind()只有在需要与activity有交互的时候才会调用。由于很多时候我们需要在servic...原创 2020-05-17 09:09:15 · 883 阅读 · 0 评论 -
AsyncTask 的源码分析
AsyncTask 的源码分析基础知识学习ThreadPoolExecutor分析关键参数分析corePoolSize:最大的核心线程数,默认情况下,核心线程会一直存活。maximumPoolSize:线程池中最大线程数量(核心和非核心线程总数),如果活动线程数等于最大值是,后续的新任务还会被阻塞。keepAliveTime:非核心线程的保留时间,超时会被回收。unit:keepA...原创 2020-04-17 22:00:55 · 293 阅读 · 0 评论 -
View的绘制流程梳理
View的绘制流程梳理MeasureSpec由于在绘制过程中,这个变量作为参数,与所有的View的measure都有关系。首先介绍一下MeasureSpec的计算过程private static final int MODE_SHIFT = 30;private static final int MODE_MASK = 0x3 << MODE_SHIFT;public s...原创 2020-04-16 19:21:34 · 179 阅读 · 0 评论 -
Loader简介以及CursorLoader的使用
Loader简介Loader是一种封装特别好的异步加载资源的方式,我们可以通过继承AsyncTaskLoader或者Loader来实现我们的异步加载资源,也可以通过谷歌原生的子类来实现一些简单的异步资源加载,比如CursorLoader就比较适用于加载数据库,ContentProvider或者手机中的图片联系人等资源。CursorLoader的使用为了更好的体验Loader的强大,我们可以尝...原创 2019-11-12 15:53:58 · 567 阅读 · 0 评论 -
Android消息机制
Android消息机制Message消息对象MessageQueue消息队列的主要功能向消息池投递消息(MessageQueue.enqueueMessage())和取走消息池的消息(MessageQueue.next());Handler消息辅助类,主要功能向消息池发送各种消息事件(Handler.sendMessage)和处理相应消息事件(Handler.handleMessage...原创 2019-10-08 20:45:50 · 160 阅读 · 0 评论 -
Android View的点击事件传递
Android View的基础知识学习View的定义view是Android中所有组件的父类,不管是Button或者TextView这样的初学者所了解的简单的View,还是ViewGroup,LinearLayout等,都是View的子类。点击事件点击事件就是MotionEvent,即手指接触屏幕之后产生的一系列事件,一般需要关注的事件类型是:ACTION_DOWN就是手指刚刚接触屏幕...原创 2019-10-07 21:03:17 · 1292 阅读 · 0 评论 -
卡片式布局以及RecycleView的用法
配置build.gradle文件: compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.android.support:cardview-v7:26.1.0'然后是两个布局文件: 显示的界面:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:原创 2018-01-07 15:28:57 · 1059 阅读 · 0 评论 -
自定义弹框
首先是类package com.hao;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.Window;import andro原创 2018-01-07 12:31:25 · 235 阅读 · 0 评论 -
Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
在导入别人的项目的时候会出现,在项目的gradle.properties中添加: android.enableAapt2=false原创 2017-12-27 13:51:36 · 334 阅读 · 0 评论 -
Android 图片的存取
最近写到一个题目,需要我把图片保存到手机。我实现的方法是结合Litepal,创建一个数据库,表中含有我的图片的路径以及图片的名称。 QR是我定义的用于创建表的类。要把图片存入手机的外部存储设备,可以先判断是否挂载,通过Environment.getExternalStorageState()是否和Environment.MEDIA_MOUNTED一致,然后通过Environment.getExte原创 2017-12-26 15:12:18 · 359 阅读 · 0 评论 -
Android 手机震动的实现
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE); vib.vibrate(95);<uses-permission android:name="android.permission.VIBRATE" />原创 2017-12-26 14:36:46 · 369 阅读 · 0 评论 -
AlertDialog的用法
这是写在activity里的代码 private View choseChapter; addChapter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LayoutInflater in原创 2017-12-26 13:39:02 · 237 阅读 · 0 评论 -
Litepal的用法以及dbname is empty的解决
要使用Litepal的步骤如下: 1.引入JAR包以及更改配置 使用Android Studio在项目的build.gradle中添加: dependencies { compile 'org.litepal.android:core:1.6.1' } 其中1.6.1是版本号,可以根据需求改变。 然后配置litepal.xml文件,一般先在app/src/main目录下新建一个原创 2017-12-25 15:55:22 · 2234 阅读 · 1 评论 -
AndroidStudio导出APK
点击Build ,然后选择Generate Signed APk … 如果已经有了Key文件则用有了的,不然点击Create new 新建一个Key,选择Key文件的存储位置,接下来密码,确定,Alias随便填写,然后密码,然后填写一下你的名字等信息,点击OK,之后选择你的Key文件,点击Next 这里是选择你的APK的存储路径,他会在这个路径下新建一个文件夹,名字为release或者debug原创 2017-12-11 01:20:29 · 586 阅读 · 0 评论 -
ListView的用法以及即时刷新
最近写了一个关于Android开发的项目,其中用到了ListView,在这里总结一下。这是我的ListView<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2017-12-10 16:15:11 · 8852 阅读 · 0 评论