
安卓进阶之旅
文章平均质量分 93
个人安卓进阶之旅
朱 江
温故知新,可以为师
展开
-
一起来看看 Compose Accompanist
今天咱们来一起看看 Compose Accompanist,Accompanist 是什么呢?Accompanist 是一组库,旨在为 Compose 提供开发人员通常需要但尚未可用的功能。原创 2023-08-08 14:01:53 · 341 阅读 · 0 评论 -
Compose Desktop 初体验之打包
大家好,前两篇文章大概介绍了下上手 `Compose Desktop` 和自定义绘制时遇到的一些问题,本篇文章带大家一起来看下 Compose Desktop 应该如何打包吧!原创 2022-12-15 17:17:53 · 3018 阅读 · 8 评论 -
Compose Desktop 初体验之绘制
上一篇文章 “从 0 到 1 搞一个 Compose Desktop 版本的玩天气之踩坑” 中大概说了下刚开始使用会遇到的一些问题,帮大家踩了踩坑,那么这一篇则会带大家一起来看下项目中绘制的一些东西,再来看下项目的最终实现效果吧!原创 2022-12-15 17:13:05 · 1178 阅读 · 1 评论 -
Compose Desktop 初体验之踩坑
大家好,好久不见,接下来一段时间我会系统性地写一套关于 Compose Desktop 的文章,带大家从头到尾写一个桌面版的天气应用,并且打好包让别人也可以进行使用,接下来就开始吧!先来看下最终的实现效果吧!原创 2022-12-15 17:00:56 · 1928 阅读 · 0 评论 -
让你的应用完美适配平板
其实标题有点吹牛逼了,谁也不敢说能完美适配平板,只能说尽力去做,包括显示和使用的各个方面尽力去做,才有可能在更多的平板设备上更加完美的运行起来,因为安卓的设备实在是太多了,之前手机在卷,现在平板也一样在卷。。。.........原创 2022-07-28 10:53:52 · 1654 阅读 · 0 评论 -
温故知新—Activity的五种启动模式
这两天遇到了一个 bug ,和 Activity 的启动模式有关,正好在 Android 12 之后四种启动模式改为了五种,那就一块来看看 Android 的五种启动模式吧!原创 2022-07-21 11:17:53 · 3620 阅读 · 8 评论 -
安卓13又来了?快!扶起我来!
一年一年过的太快了,还记得两年前写了 Android 11(R) 的适配文章,这一转眼都13(T)了,今天我们一起来学习适配下 Android 13 吧!原创 2022-07-07 10:23:13 · 4718 阅读 · 0 评论 -
聊一聊 AS 的一些好用的功能
首先,什么是 as ?as 是 Android Studio 的简称,做安卓开发的对 as 应该都很熟悉,本文带大家一起来聊聊 as 中一些好用的功能。原创 2022-05-07 18:18:16 · 2659 阅读 · 0 评论 -
Android 12 小部件详解
2020年九月苹果的 iOS 14 正式版本发布,其中的一项重大更新就是苹果也支持小部件了!不容易啊,安卓好多年前拥有的功能现如今苹果终于用上了,虽然苹果的小部件挺好看的,但是安卓也不差,快来看看吧!原创 2021-12-03 10:53:23 · 3850 阅读 · 5 评论 -
Android 最新状态栏处理
Android 中状态栏的处理无非两种,一种是显示隐藏状态栏,另外一种是状态栏字体颜色的修改,之前的写法都已经废弃了,来看看最新的版本中应该如何处理吧。原创 2021-12-15 15:02:57 · 3667 阅读 · 1 评论 -
玩转 Compose 中的 Lottie 动画
无聊的前言我太累了,真的太累了,公司项目搞了好久,到现在还一直有问题,导致已经两三个月没有过任何文本输出。其实这都是借口,关键还是变懒了,上周末还出去玩了一趟????。Compose 已经发布稳定版几个月了,有个现象我一直很纳闷,在 Compose 发布了 alpha 版本和 beta 版本之后各大技术论坛都开始不停地讨论,并且有相应的一大堆文章输出,但是正式版发布之后反而都销声匿迹了,这是什么情况???不过这只是技术论坛的一些现状,大佬们还是在不停地前进的,就比如今天的主角——Lottie,Comp原创 2021-10-24 09:05:22 · 1359 阅读 · 2 评论 -
你会在 JitPack 上创建依赖库吗?
为什么写看见标题有人可能会轻蔑一笑,多简单个事?还至于专门写一篇文章吗?我之前也以为挺简单的,因为之前自己也上传过,但是前几天的经历告诉我没有那么简单,特别是现在安卓 Gradle 升级到 7.0 之后。。。还可能有人问为什么要在 JitPack 上创建呢?JCenter 、Maven 不香嘛?因为我之前就在 JitPack 上创建过依赖,有点经验,所以选择这个,至于JCenter ,可能大家也知道,直接看官网吧:懂了吧。。。为啥没选 Maven 呢。。。因为我没想到 JitPack 变得这么原创 2021-04-02 10:12:01 · 9592 阅读 · 9 评论 -
构建安卓项目通用TitleBar
前言每个项目的每个页面基本都会写头布局,但如果每个布局都写一遍头布局的话未免太过于麻烦,所以想着直接写一个吧。第一种 include一般这种情况首先想到的肯定是写好布局,然后直接用到的地方include即可。那就来吧!首先看下效果吧:一般布局的头部可以分为三个模块,左中右,中间一般都是标题,所以直接放上TextView即可,左右有可能是文字也有可能是图片,所以两种都写上,上代码:<?xml version="1.0" encoding="utf-8"?><FrameLayou原创 2020-06-18 14:18:55 · 740 阅读 · 0 评论 -
线程池之刨根问底
线程池之刨根问底前言说起刨根问底,首先想到的竟然是------小沈阳。。。。。其实有关线程池的文章一搜都有一大堆,但。。。感觉都不全(手动狗头)什么是线程?先不说线程池的概念了,先说下什么是线程。线程究竟是什么?百度这个问题的一般会得到如下答案:线程是指进程中的一个执行流程,一个进程中可以运行多个线程。奥,线程是进程里的,听着这些名词感觉都很熟悉,感觉一直在和它们打交道,但,什么是进程呢?不就是一个内存中运行的应用程序嘛!而且有它自己独立的一块内存空间,一个程序至少有一个进程,一个进程至少原创 2020-05-31 21:07:43 · 566 阅读 · 0 评论 -
再谈事件分发
再谈事件分发前言“大哥大哥,快来,领导叫你过去面试!!”“来了来了!”看了看简历,面试的是中级安卓开发。“你来说一下安卓事件分发机制吧!”…“大哥,老实说,事件分发我也不咋会,还幸亏你面试我的时候高抬贵手,没问我,要问我的话我就进不来咱们公司了!”“抬啥手,你面试的时候面试的是实习生,我问你这干啥?”“奥,好吧。。。。话说回来,大哥,你能给我讲讲事件分发嘛?”“行吧,那就给你从...原创 2020-05-08 08:56:28 · 583 阅读 · 0 评论 -
安卓11?快!扶我起来继续学
前言安卓更新换代非常快,5.0之前版本更新的时间线有点看不懂,但5.0之后更新还是比较稳定的,大概一年更新一次,谷歌工程师对安卓每个版本的命名也有点意思,比如棒棒糖、棉花糖、奥利奥、馅饼啊啥的(命名的应该也是个吃货),还有,从1.5开始,之后的版本都按照英文字母顺序排列,从C开始,到现在的11排到了R。2019年5月8日,谷歌在Google I/O 2019开发者大会上,正式公布了安卓10系统...原创 2020-04-20 11:32:28 · 1897 阅读 · 2 评论 -
暗黑模式?安卓适配一波
前言第一次听到暗黑模式的时候,感觉好酷啊,听着就好看(也不知道我怎么听出来的)。苹果在前几年就有暗黑模式的风声,好像是在IOS11、IOS12的时候就说要推出了,结果愣生生等到了IOS13暗黑模式才推出。IOS13推出到现在已经大半年了,系统应用没得说,完美适配,三方应用也都陆续支持了暗黑模式,就连微信在前段时间的更新中也实现了暗黑模式,先来欣赏下微信的暗黑模式吧!正文既然苹果实现了暗黑模...原创 2020-04-14 15:05:54 · 2097 阅读 · 0 评论 -
安卓实现视频直播(rtmp)以及直播推流(NDK实现)
前言想写关于NDK的文章很久了,但一直不知道该写点啥,该怎么写?正好公司有一个直播和播放的需求,那好吧,就造一个视频播放和视频直播的轮子吧。那说干就干!声明一下,本篇文章不会写怎样配置NDK等问题,只是大概介绍一下思路,具体代码已经放在Github上,大家可以下载代码自己进行定制或者直接引入进行使用。如果有幸帮到各位,那就请点一个Star,不胜感激。下面是具体使用方法:引入依赖首先在项目的b...原创 2020-03-03 21:46:55 · 3684 阅读 · 9 评论 -
9012年都过去了,你确定还不学安卓的热修复?(手写AndFix)
背景介绍热修复,乍一听,感觉好牛逼的样子,实际上并没有多么神秘,为什么这样说呢?且听我娓娓道来。。。你发布了一款安卓应用,早上刚发版,结果发完之后发现有个bug没有修复,会直接导致整个应用崩溃,这时候你该怎么办呢?难道再马上重新打包发版吗?显然是不现实的,那么这时候热修复就来了,帮你打上一个补丁(没错,我认为热修复就像给衣服打补丁。。。),然后在你应用启动的时候直接进行修补,这样就可以不用...原创 2020-01-05 00:03:28 · 1080 阅读 · 2 评论 -
你知道安卓的3D Touch吗?(Shortcut详解,你想知道的我都有)
前因后果苹果在iPhone 6s和iPhone 6s Plus开始新增了3D Touch,这个功能褒贬不一,但我觉得还是特别好用的,特别是在微信上付款、加好友、扫二维码,或是在支付宝上付款等等场景。好用的真的是不要不要的,下面是苹果3D Touch的截图:这么好用的功能安卓能不模仿吗?呸!能不实现吗?从安卓7.1(25)开始,系统新增了Shortcut来实现类似苹果3D Touch...原创 2019-11-29 13:31:01 · 5916 阅读 · 8 评论 -
一文带你玩转安卓Kotlin+Retrofit+RxJava+MVP架构(附Demo)
为什么写主要是周末闲的。之前公司的代码谈不上架构一说,因为基本都是直接在activity中进行操作,不管是网络请求还是数据库的操作,有时候一个activity甚至能写到好几千行,维护起来真的是。。。那酸爽。前言安卓目前的架构无非那几种:MVC 、MVP、MVVM。M和V一直存在,只是后面的不同。都是老生常谈的东西了,这里也就不多赘述了。最开始学习安卓的时候,使用的是HttpClie...原创 2019-11-24 17:30:02 · 2954 阅读 · 1 评论 -
安卓使用滤镜的点点滴滴
前言安卓开发中,对图像的处理一般就是Bitmap(位图),它包含了图像的全部数据,即点阵和颜色值,点阵就是包含像素点的矩阵,而颜色值就是ARGB,分别代表透明、红色、绿色、蓝色通道,它们共同决定了像素点的颜色。今天要说的滤镜是针对图片的颜色进行修改。一张图片所存储的信息有图像信息加上数据和标志。每一张图片都有图像通道和颜色模式。图像通道在RGB色彩模式下就是指在下就是指那单独的红色R、绿色...原创 2019-11-19 11:30:04 · 747 阅读 · 0 评论 -
Android Studio上传码云详细图文教程
项目由于重构,需要重新上传一个库,所以记录下。首先在码云新建一个仓库:填写名称等信息,直接点击创建即可。然后把项目的https地址复制下来:接下来进入AS开始操作:选择文件好文件之后点击确定。在左边project栏右键点击项目名称,根据图示选择先将项目添加到本地git:然后点击开始上传,由于还没有配置码云的网址,所以...原创 2019-08-13 18:20:22 · 1332 阅读 · 0 评论 -
安卓构建项目通用头部(功能完善)
国庆的最后一天假期,写篇博客纪念一下吧。实际项目中会有很多页面,而头布局大同小异,如果每个页面都写一遍的话代码太过冗余,所以建议将头布局抽取出来,做一个通用的自定义布局。首先看一下写完的样式吧:第一步,先建立一个自定义布局,继承自RelativeLayout(布局文件跟布局是啥就继承啥):/** * 自定义头部View * * @author jiang zhu on ...原创 2019-10-07 16:40:17 · 1126 阅读 · 4 评论 -
Android Q(安卓10)获取唯一ID(最优解)
安卓Q中google彻底禁止了第三发应用获取imei,并且mac地址返回的地址也变成了02:00:00:00:00:00。这是官方给出的解决方案:https://developer.android.com/training/articles/user-data-ids这是官网的截图:方法一:既然这两个都没法获取了,所以想到获取ANDROID_ID: pub...原创 2019-10-11 14:25:11 · 17858 阅读 · 10 评论 -
安卓集成环信
首先,如果想省事的话一定要使用官方的easeui,会省很多事。那么问题就来了,应该怎么做呢?记着,如果使用easeui的话,不要直接在项目中导入jar包或者引用依赖,因为会出现各种问题。如果不使用easeui就无所谓了。直接import moudle,easeui。然后会出现不能导入moudle的问题,这个在我上一篇博客说了解决方法。导入之后按shift+alt+ctrl+s进入project...原创 2018-09-24 00:13:22 · 1758 阅读 · 1 评论 -
LitePal使用心得(激进查询等)以及小问题记录
首先:AndroidManifest中Activity的launchMade不能瞎写,需要着重理解。"standard"(默认启动模式)standard是默认的启动模式,即如果不指定launchMode属性,则自动就会使用这种启动模式。这种启动模式表示每次启动该Activity时系统都会为创建一个新的实例,并且总会把它放入到当前的任务当中。声明成这种启动模式的Activity可以被实例化多次,一个...原创 2018-07-13 17:11:06 · 1254 阅读 · 0 评论 -
安卓一行代码实现避免按钮重复点击(AOP)java和kotlin都能使用
之前处理按钮重复点击基本由两种思路: 1、第一种是点击之后禁止点击,然后等操作执行完毕之后再放开点击。 2、第二种是重写OnclickListenrer方法,在里面进行一些操作。但是上面两种方式都对代码由侵入性。AOP很好的解决了这个问题。我已经写好了代码,大家直接添加依赖进行使用即可。aop的方式是实现防止按钮多次点击,java和kotlin都能使用使用方法很...原创 2019-05-13 17:02:00 · 2684 阅读 · 7 评论 -
安卓中显示表格并将表格数据以excel格式导出
公司项目需要在安卓中显示表格并将表格数据以excel格式导出,表格可以自己定义,最开始想的是使用listView或者recycleView来实现,但是感觉灵活性太差,于是乎就去万能的Github上寻找资源,找了找感觉smartTable写的很好,功能强大且符合需求,好了,开始干活:显示表格数据 1、添加 JitPack repository 到你的build文件allproj...原创 2019-04-14 20:19:50 · 2151 阅读 · 3 评论 -
安卓使用RecycleView+SmartRefreshLayout+CommonAdapter实现最简单上拉刷新,下拉加载。
之前一直觉得ListView好用,但是好多情况不太适用。而RecycleView比较方便。然后今天就说这个吧。下面是要实现的效果。首先,先加入需要的依赖,每个依赖的作用已经在代码中标明。dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //noinspection Gradl...原创 2019-01-31 17:32:15 · 904 阅读 · 2 评论 -
安卓通过路径生成zip文件
首先,建一个工具类。public class ZipUtils { public static void zip(String src, String dest) { //提供了一个数据项压缩成一个ZIP归档输出流 ZipOutputStream out = null; try { File outFile ...原创 2018-08-10 17:33:08 · 1730 阅读 · 0 评论 -
Android点击空白区域,隐藏输入法软键盘
啥都不需要写,当然如果有需要可以在配置文件中添加以下代码: android:windowSoftInputMode="stateHidden" 其实只需要在基类中重写onTouchEvent方法就可以了。没错,这就搞定了。 @Override public boolean onTouchEvent(MotionEvent event) { if(n...原创 2018-08-01 17:22:57 · 1728 阅读 · 0 评论 -
Android调用相机拍照录视频录音以及存储,7.0以上及以下都可使用。
在开头,先说一下在imageVIew中如何显示文件中存储的视频的第一帧的图片。很简单,几行代码就搞定。MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(user.getPath()); Bitmap bitmap = media.ge...原创 2018-07-27 13:30:26 · 4468 阅读 · 3 评论 -
安卓减小apk的体积,整体优化代码
百度到的方法都太普通,还是通过as自带的功能来实现吧,有两种方法。 1、首先生成apk文件,点击Build->Build Apk(s),然后再点击Build->Analyze Apk...会生成如下界面。可以直观的看出到底是那一部分占的内存大。 2、点击Analyze->Inspect Code...会生成如下界面。下面一条一条的来说。。。 a、A...原创 2018-07-20 10:40:03 · 2780 阅读 · 0 评论 -
安卓根据需要压缩图片大小bitmap,drawable
就下面的一个方法就可以:public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) { //获得图片的宽高 int width = bm.getWidth(); int height = bm.getHeight(); //计算缩放比例 fl...原创 2018-07-12 17:07:32 · 744 阅读 · 0 评论 -
安卓一个Activity中包含多个fragment实现沉浸式状态栏(最后是实现沉浸式的强制方法)
昨天给公司做的沉浸式状态栏,处处是大坑,fragment和activity设置沉浸式方法并不一样。一个一个来吧。首先说设置普通activity的。注意,一定要先判断,如果手机的SDK版本在19以下,就别弄了,没用安卓7.0之后,沉浸式状态栏变灰问题,解决办法,再setContentView之前添加以下代码。if(Build.VERSION.SDK_INT >= Build.VE...原创 2018-07-17 16:46:36 · 3782 阅读 · 0 评论 -
FileProvider 的使用(Failed to find configured root that contains/storage/emulated/0/DCIM/ )
原文地址以前调用系统相机拍照的时候,流程是这样的 private void takePhoto() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) !...转载 2018-07-02 09:47:30 · 6427 阅读 · 1 评论 -
安卓第三方开源库
原文在简书,这是地址Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!安卓开发者不得不收藏的工具学技术就去懒人博客安卓那些你不得不收藏的开源库GitHub上受欢迎的Android UI LibraryAndroid开源项目以及开源框架,各种UI实现效果一款集成了网络请求,本地缓存,配置文件,数据库映射,权限申请,链表管理Activity,简化Activity、Se...原创 2018-06-21 17:26:12 · 5563 阅读 · 3 评论 -
Android实现调用系统相机录像及实现录音
录像实现原理特别简单,先在配置文件中声明一下权限,这个就不说了,然后直接使用Intent跳转就行。Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); ...原创 2018-06-21 16:13:09 · 2343 阅读 · 0 评论 -
安卓实现TextView “选择文字”“复制” “粘贴” 功能
转载出处方法一:用EditText代替TextView通过设置EditText的属性android:background来隐藏EditText自带的输入下划线,但有一弊端是:EditText不只可以复制还可以剪切、黏贴,这样的操作会对原内容产生修改,不太妥当。方法二:用TextView的setTextIsSelectable(boolean selectable)使用TextView的自带函数se...原创 2018-06-20 09:15:05 · 2987 阅读 · 0 评论