Android那些事
文章平均质量分 60
这里面涵盖了Android开发中各种有趣的事,你确定不来看看!!!
super码王
一直在努力,从未放弃!!!
展开
-
Android APT实战
APT(Annotation Processing Tool)即注解处理器,在编译的时候可以处理注解然后搞一些事情,也可以在编译时生成一些文件之类的。ButterKnife和EventBus都使用了APT技术,如果不会APT技术就很难看懂这两个框架的源码。原创 2024-07-10 15:47:46 · 857 阅读 · 0 评论 -
Activity的启动过程详细分析
我们在平时开发中都知道通过这样的代码就可以启动一个Activity,如下但是,你有没有思考这个方法的大致实现呢?下面,我们一起来看看。1、一般我们都是通过调用来启动一个 Activity 的,紧接着它会调用其内部的方法,注意这里的,因为我们不需要返回result;2、接下来调用到了方法,它最终调用了如下代码:这个是什么呢?可以说它是应用进程的管家,监控着应用进程与系统的所有交互,所有的创建、暂停、停止activity,都是通过它去发起的,它可以统计所有的开销。...原创 2022-08-28 22:32:21 · 1863 阅读 · 1 评论 -
android room史上最快速入门教程(kotlin版本)
Android采用作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(ObjectRelationalMapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,GreenDAO等。Google也意识到了推出自家ORM的必要性,于是有了Room。...原创 2022-07-24 20:16:29 · 2369 阅读 · 0 评论 -
史上最全SurfaceView使用讲解
1、View主要适用于主动更新的情况下,而SurfaceView主要适用于被动更新,例如频繁地刷新。2、View 在主线程中对画面进行刷新,而 SurfaceView 通常会通过一个子线程来进行页面的刷新。3、View 在绘图时没有使用双缓冲机制,而 SurfaceView 在底层实现机制中就已经实现了双缓冲机制。总结,如果需要频繁刷新,或者刷新时数据处理量比较大,那么可以考虑使用 SurfaceView 。 kotlin逻辑文件1、通过 SurfaceHolder 添加 Surf原创 2022-07-10 11:48:42 · 2922 阅读 · 0 评论 -
Android Gradle三种自定义插件方式详解(含报错解决方案)
运行结果:1、新建一个 buildSrc 文件夹2、新建一个 build.gradle 文件,里面添加如下代码,然后点击 sync now,你就会发现 buildSrc 文件夹多了一个绿标 3、新建子目录 src/main/java ,并编写一个插件类4、在app下的build.gradle里面应用运行结果展示:1、新建一个独立的module,不要选错了!!!,2、在该模块下的build.gradle里添加依赖可能出现的报错 Build was configured to prefer s原创 2022-06-27 18:06:39 · 2097 阅读 · 0 评论 -
史上最简洁Kotlin版EventBus的使用教程
GitHub - greenrobot/EventBus: Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.https://github.com/greenrobot/EventBus 1、配置gradle,导入依赖 2、定义Event类型(原创 2022-06-23 14:11:58 · 2616 阅读 · 0 评论 -
ViewModel与LiveData的简单使用
使用注意点LiveData与ViewModel一般都是配合着一起使用。第一步:创建ViewModel类package com.example.jetpackdemo03;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModel;public class NameViewModel extends ViewModel { private MutableLiveData<原创 2022-05-19 21:59:24 · 909 阅读 · 0 评论 -
【Android组件化】javaPoet的使用
基础知识回顾【Android组件化】一文教你玩转APT_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/122818568?spm=1001.2014.3001.5501javaPoet使用教程square/javapoet: A Java API for generating .java source files. (github.com)https://github.com/square/javapoet.原创 2022-02-12 10:30:01 · 682 阅读 · 0 评论 -
【Android组件化】一文教你玩转APT
APT(Annotation Processing Tool)原创 2022-02-10 22:01:57 · 2704 阅读 · 0 评论 -
【Android组件化】组件化中子模块交互方式
五种方法前三种方法局限性较大,实际项目中使用已经比较少了,下面我将只会介绍 方法四 和 方法三方法四效果展示讲这个方法之前,我默认大家都会 组件化 配置了,所以下面直接展示我测试的项目结构:由于app和order/person都存在依赖关系,所以 app =》 MainActivity 跳转到 order =》OrderMainActivity 的方法如下:public void toOrder(View view) { Intent intent ..原创 2022-01-28 23:51:23 · 2634 阅读 · 1 评论 -
【gradle】Android项目中gradle执行流程
做过Android开发的同学都知道 ,Android项目中存在三个gradle文件,那你是否知道他们的执行流程呢?请看下面这张图:为了验证结论的正确性,我们采用输出字符串的验证方式:输出结果如下:...原创 2022-01-27 23:03:29 · 3531 阅读 · 0 评论 -
Android音视频基础知识
播放音视频的原理图解原创 2022-01-22 23:06:41 · 2741 阅读 · 0 评论 -
RecyclerView item布局出现错乱的解决方法
问题描述当我们在使用 RecyclerView 的时候,有时候会发现 布局展示出现错乱,究其原因是RecyclerView 布局复用导致的。问题原因其原因是RecyclerView 布局复用导致的。解决方法在onBindViewHolder 中把你用到的布局初始化一下即可。防止由于RecyclerView 布局复用 导致给布局添加默认值。...原创 2022-01-16 22:38:24 · 2509 阅读 · 0 评论 -
Gradle 7.0+ 设置aar路径失败问题
前提条件在 libs 下存在一个 aar 库文件方法一:通过可视化工具效果展示方法二:直接写代码两种写法原创 2021-12-13 21:33:02 · 996 阅读 · 1 评论 -
msys2中导入window环境变量
配置环境变量MSYS2_PATH_TYPE ==》inherit原创 2021-12-10 10:48:33 · 821 阅读 · 0 评论 -
一文彻底玩转Android通知栏消息通知
消息渠道Google为什么要引入消息渠道这个,因为在之前版本的Android通知管理中,通知消息要么全部接收,要么全部屏蔽,然而消息渠道改变了这一特点。就是每条通知都要属于一个对应的渠道。每个App都可以自由地创建当前App拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。用户可以自由地选择这些通知渠道的重要程度,是否响铃、是否振动、或者是否要关闭这个渠道的通知。以小米手机上的微信为例API介绍不带 channelId 已被废弃,慎用!!!当然,Google也并原创 2021-12-09 22:19:19 · 4449 阅读 · 0 评论 -
Handler面试那些事
1、子线程到主线程通信都有哪些方式?子线程到主线程通信的原理?这个是 Android 特有的概念。线程间的通信方式:eventbus、rxjava、livedata。然而,这些方式的底层原理都是基于 handler,所以,下面我将为大家讲解 handler 通信原理。handler调度流程:子线程: handler.sendMessage(msg) =》 handler.enqueueMessage =》MessageQueue.enqueueMessage()主线程:Looper.lo原创 2021-12-05 22:54:07 · 2721 阅读 · 0 评论 -
gradle7.0.2如何发布jitpack开源项目
前言gradle 可以说发展十分迅速,一下子就飙升 7.0.2 了。当你想用 github + jitpack 发布自己的开源项目的时候,网上找的教程都是 基于gradle 3./4.记得,里面还说道要依赖android-maven-gradle-plugin插件,殊不知这个插件已经被废弃了。下面,我就一步步教大家如何从0开始发布自己的 jitpack 开源项目。说明:由于国内 github 网站不稳定,时不时访问不了,下面的案例我就以 gitee 来讲解,因为github 和 gitee ..原创 2021-11-28 12:28:16 · 2930 阅读 · 1 评论 -
如何让别人在gradle中直接compile你的开源库
准备的工具github 主要作用是发布你的项目GitHub: Where the world builds software · GitHubGitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, trac原创 2021-11-27 12:15:06 · 396 阅读 · 0 评论 -
Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in mod
换了AndroidStudio4.2.2后,类似Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in module冲突很多次出现这种错误了,解决办法:修改gradle.properties:看到下面两句没有的就加上吧。android.useAndroidX=trueandroid.enableJetifier=true...原创 2021-11-23 18:38:49 · 4262 阅读 · 1 评论 -
不需要第三方SDK就能实现Android图片的分享
效果展示原理分析隐示意图代码展示MainActivity.javapackage com.wust.shareappdemo;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net...原创 2021-11-18 21:44:12 · 236 阅读 · 0 评论 -
Android混合使用service小技巧
预备知识Android四大组件之service(一)_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/120816678?spm=1001.2014.3001.5502Android四大组件之service(二)_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/120853603?spm=1001.2014.3001.5502总结知识原创 2021-11-03 22:19:20 · 322 阅读 · 0 评论 -
Android应用接入支付宝支付详细教程
第一步:访问支付宝开放平台,进入管理中心支付宝开放平台 (alipay.com)https://open.alipay.com/第二步:创建应用里面有一项 应用签名 ,他需要特定的 签名软件 和 配合特定步骤:原创 2021-10-27 22:11:32 · 5616 阅读 · 2 评论 -
Android中 AIDL 实际开发步骤
AIDL基本知识点定义: Android 接口定义语言。作用:不同应用的客户端通过 IPC 方式访问服务,并且希望在服务中进行多线程处理时,您才有必要使用 AIDL官方文档:Android 接口定义语言 (AIDL) | Android 开发者 | Android Developers (google.cn)https://developer.android.google.cn/guide/components/aidl?hl=zh-cn操作步骤第一步:创建 aidl 文件...原创 2021-10-25 22:55:12 · 1245 阅读 · 0 评论 -
Android显式意图和隐式意图
intent基本理解我们都知道Android四大组件:Activity 、Service、broadcast receiver 及 内容提供者。 其中,Activity 、Service、broadcast receiver 三大组件之间的通信 intent 起着至关重要的作用,即媒介。 intent 可以激活 Android 应用的三个核心组件:活动(Activity)、服务(Service)和广播接收器(BroadcastReceiver)显式意图 和 隐式意图显示意图:在创建 inte.原创 2021-10-25 10:50:56 · 2762 阅读 · 0 评论 -
Android调用系统相机/相册并裁剪详解
效果展示关键技术 android文件管理系统代码编写第一步:布局文件的准备<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://...原创 2021-10-23 22:13:38 · 2532 阅读 · 0 评论 -
Couldn‘t find meta-data for provider with authority com.wust.camerademo
报错信息Couldn't find meta-data for provider with authority com.wust.camerademo报错原因AndroidManifest.xml 清单文件中未注册provider解决方法第一步:在AndroidManifest.xml 中配置provider<provider android:name="androidx.core.content.FileProvider" ...原创 2021-10-23 20:02:06 · 515 阅读 · 0 评论 -
Android四大组件之service(二)
在Android四大组件之service(一)文中我们讲到了service 的 基本概念和startService 启动方式、stopService。不过这种方式是有个缺点,我们无法调用 FirstService 类里面的方法。这个时候有人会说 newFirstService() 不就好了吗?其实不然,作为四大组件,你是不能直接new的,必须由系统创建,并服务他们context(即上下文)。下面,我们就来讲一下另外一种启动服务的方式。bindService() / unBindServ...原创 2021-10-19 21:50:42 · 405 阅读 · 0 评论 -
Android四大组件之service(一)
什么是service?定义:长期运行在后台的程序。书面表达:首先它是一个组件,用于执行长期运行的任务,并且与用户没有交互。注意事项每一个服务都需要在配置文件AndroidManifest.xml文件里声明,申明方式如下:使用<service>标签,其实就是跟Activity一样申明。启动服务的方式有:Context.startService() / Context.bindService()关闭服务的方式有:Context.stop()Service() / ...原创 2021-10-18 22:23:33 · 328 阅读 · 0 评论 -
解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题
问题展示中文解释 :就是说 fastjson 解析不了你这个数据数据格式public class TempMsgEncap<T> { private Integer channel; private List<T> msgList; public Integer getChannel() { return channel; } public void setChannel(Integer channel)原创 2021-10-09 20:51:23 · 29690 阅读 · 2 评论 -
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
报错原因网上大部分说是 Gson 解析时候报错,但是,我都还没写Gson解析代码,只是在编译项目的时候报错解决方法Android studio 版本太低,更新到最新+稳定版本即可解决效果图如下原创 2021-09-22 10:10:54 · 304 阅读 · 0 评论 -
AS 如何安装 ASM BYTECODE OUTLINE 插件
问题展示如果我们强行在 AS 的插件市场上搜索 ASM 由于网络的原因,我们是得不到结果的。如下图所示:解决方法第一步:先下载ASM BYTECODE OUTLINE插件下载链接下载下来 文件如下:第二步:安装ASM BYTECODE OUTLINE插件【Settings】–>【Plugins】点击右上角图标,选择【Install Plugn from Disk】选择刚下好的 asm-bo-0.3.5.zip 点击 【OK】 即可安装..原创 2021-09-06 18:55:55 · 1180 阅读 · 0 评论 -
AndroidStudio SSL peer shut down incorrectly 问题
问题原因gradle 版本 与 gradle插件版本不一致如何查找对应关系Android Gradle 插件版本说明 | Android 开发者 | Android Developers (google.cn)概念剖析gradle、build.gradle、buildToolsVersion、compileSdkVersion、targetSdkVersion、minSdkVersion通俗语言讲解buildToolsVersion:用什么版本的build工具对代码进...原创 2021-08-30 13:06:48 · 264 阅读 · 0 评论 -
Paint API —— setXfermode() 详解
效果展示API解释setXfermode(Xfermode xfermode)@param xfermode May be null. The xfermode to be installed in the paint译文:xfermode 可以为空,并且必须安装到画笔上Xfermode对象由 PorterDuffXfermode(PorterDuff.Mode mode)构造方法产生PorterDuff.Mode mode 有18种使用步骤:第一步:绘制 目标(d.原创 2021-08-09 22:39:17 · 1099 阅读 · 0 评论 -
ViewPage + DialogFragment + Bitmap项目实战
前期知识Android自定义轮播效果ViewPager一屏多页面显示两侧无触摸/滑动事件ViewPage实现一屏多页面显示(进阶版)DialogFragment的简单使用效果展示实现思路1、利用 FrameLayout 父布局中 压两层 ImageView (穿衣服的在上面、没穿衣服的在下面)2、监听 上层ImageView onTouch 事件,当手指在上面移动时,以手指为基准 将40*40像素大小的像素点 设置为透明。注意点:BitmapFactory.d...原创 2021-08-09 16:08:49 · 901 阅读 · 4 评论 -
ViewPage实现一屏多页面显示(进阶版)
相关文章Android自定义轮播效果ViewPager一屏多页面显示两侧无触摸/滑动事件效果展示实现思路最难的写的是transformPage 这里面的一段逻辑。我总结为如下几点:第一步:中间 哪张 的 position 属于哪个范围把所有值打印出来观察获得第二步:根据 观察 结果把区间分好第三步:相邻区间保证连贯性注意:这里一次性打印多少个 page 是由页面一次显示多少 imageView 决定的代码示例MainActivity.javapa..原创 2021-08-09 01:05:19 · 3102 阅读 · 5 评论 -
ViewPager一屏多页面显示两侧无触摸/滑动事件
传统解决方法关于ViewPager显示两边的item方法,我们以前使用的方法是 在ViewPager外包一个Layout,然后设置ViewPager和外面的Layout的clipChildren="false"。ViewPager再设置layout_marginLeft,layout_marginRIght,以留出空间来显示两边的item.<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=原创 2021-08-08 23:17:24 · 1089 阅读 · 1 评论 -
Android热修复基础篇(二)
在Android热修复基础篇(一)中我们讲了 热修复 的基本概念和四种常见热修复解决方案的原理,最后,我们会发现他们都有一个共同特点:那就是玩到最后都是对 dex 文件进行操作。想要把 dex 文件玩明白,这篇文章你的读下去!!!...原创 2021-07-25 17:51:35 · 270 阅读 · 0 评论 -
Android热修复基础篇(一)
什么是热修复?定义:在我们应用上线后出现bug需要及时修复时,不用再发新的安装包,只需要发布补丁包,在客户无感知下修复bug。怎样进行热修复?服务端:补丁包管理 用户端:执行热修复 开发端:生成补丁包读完本系列文章之后需要需要掌握的问题常见的热修复解决方案(用户端)从图中可以看到,是否 “及时生效” 将它们分成了两派:Tinker和QZone 、 AndFix和RobustAndFix(已经没人用了)在native动态替换java层的方法,通过nati...原创 2021-07-24 22:21:26 · 678 阅读 · 4 评论 -
Android动画的使用——属性动画
往期回顾Android动画的使用——朴间动画在这一篇文章中我们可以了解到Android动画 的分类 和 朴间动画的简单使用。Activity切换效果在这一篇文章中我们可以学习到 朴间动画 在 Activity切换 中的应用。Fragment切换效果在这一篇文章中我们可以学习到 朴间动画 在 Fragment切换 中的应用。视图组 (ViewGroup)中子元素的出场效果在这一篇文章中我们可以学习到 朴间动画 在 视图组中子元素的出场效果 中的应用。属性动画的引入朴间动画 存...原创 2021-07-21 15:41:59 · 278 阅读 · 0 评论