![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓开发
Flying Rookie
心有猛虎,细嗅蔷薇
展开
-
Android将数据导出为excel文件的方法
项目中需要将未上传的数据导出到excel,供用户可见。不同的模块传入数据类型不一样。所以用了List<ArrayList>将数据封装成二维string类型。效率还挺高build.gradle中引入jxl库。 // https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'先上效果图在这里插入图片描述原创 2020-12-25 17:36:00 · 4002 阅读 · 5 评论 -
WorkManager of Jetpack’s Architecture Components
介绍WorkManager 旨在用于可延迟运行(即不需要立即运行)并且在应用退出或设备重启时必须能够可靠运行的任务。例如:向后端服务发送日志或分析数据定期将应用数据与服务器同步步骤将 WorkManager 添加到您的 Android 项目中将以下依赖项添加到应用的 build.gradle 文件:dependencies { def work_version = "2.4.0" // (Java only) implementation "androidx.原创 2020-08-21 17:21:19 · 198 阅读 · 0 评论 -
Android音视频开发学习——硬解码
本篇文章较长,记录自己学习安卓中音视频相关知识的笔记。视频帧视频由许多个帧构成,一个帧相当于一张图片 。帧率是单位时间内的帧数,决定了视频的流畅度。单位是帧/秒或者frames per second(fps),越大视频越自然流畅。电影帧率 :24,25fps游戏帧率:30,60 fps色彩空间是在某些标准下用通常可接受的方式对彩色加以描述。用于彩色监视器和一大类彩色视频摄像。RGBRGB图像具有三个通道R、G、B,分别对应红、绿、蓝三个分量,由三个分量的值决定颜色YUV是根据一个亮原创 2020-08-11 11:05:00 · 4342 阅读 · 0 评论 -
Android中NFC相关技术(二)
前言上一篇主要介绍了安卓NFC相关的基础知识,这节主要来看看项目中使用到的知识支持的标签技术Android 通过 android.nfc.tech 软件包对这些用例提供一般性支持,如表 1所述。您可以使用 getTechList() 方法确定标签支持的技术,还可以使用 android.nfc.tech 提供的一个类来创建相应的 TagTechnology 对象。表 1. 支持的标签技术类说明TagTechnology这是所有标签技术类都必须实现的接口。NfcA提供对原创 2020-08-03 17:19:49 · 654 阅读 · 0 评论 -
Android中NFC相关技术(一)
NFC是Near Field Communication(近场通信)的简称。是一种新兴的技术,使用了NFC技术的设备(例如移动电话)可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID)及互连互通技术整合演变而来的,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。支持 NFC 的 Android 设备同时支持以下三种主要操作模式:读取器/写入器模式:支持 NFC 设备读取和/或写入被动 NFC 标签和贴纸原创 2020-08-03 17:17:12 · 923 阅读 · 0 评论 -
Room and Rxjava2
前言关于Room的介绍和基本操作,请看我的这篇文章Room of Jetpack's Architecture Componentsrxjava特点先来简单介绍一下这几个属于RxJava的对象的特点。Completable:只有onComplete和onError方法,即是只有“完成”和“错误”两种状态,不会返回具体的结果。Single:其回调为onSuccess和onError,查询成功会在onSuccess中返回结果,需要注意的是,如果未查询到结果,即查询结果为空,会直接走onError回调原创 2020-06-23 16:08:28 · 1447 阅读 · 0 评论 -
kotlin特性自定义DialogFragment
title: kotlin特性自定义DialogFragmentdate: 2020-06-19 15:59:27tags: [kotlin,安卓]介绍DSL(domain specific language),即领域专用语言:专门解决某一特定问题的计算机语言,比如大家耳熟能详的 SQL 和正则表达式。今天,我展示如何实现某种类型的DSL,我们将在Kotlin中包装一个现有的Java Builder。在java中我们经常会用到构建者模式,例如,如果您是Android开发人员,您一定使用了Alert.原创 2020-06-19 16:17:13 · 1819 阅读 · 0 评论 -
android新的网络状态NetworkUti
在Android中compileSdkVersion为29时,NetworkInfo被标记为deprecated。现在根据Network来判断/** * @Author: kanghanbin * @Description: NetworkUtil判断网络状态是否可用 * @CreateDate: 2020/4/27 14:16 */val Context.isNetWorkAvailable: Boolean get() { val con原创 2020-06-18 10:57:11 · 383 阅读 · 0 评论 -
Observable.hide的用法
一、问题Observable类中的hide方法有什么用?我阅读了该文档,但仍然不知道它的用途,我看到很多人在使用它Hides the identity of this Observable and its Disposable.Allows hiding extra features such as Subject’s Observer methods or preventing certain identity-based optimizations (fusion). there are a l原创 2020-05-21 11:39:31 · 884 阅读 · 0 评论 -
华为手机断点调试5秒左右自动断开的问题
今天开发完后,程序有bug,然后使用Android studio连着我的p30断点调试程序,发生了恶心的一幕——断点调试几秒后自动断开,程序ANR。重点是之前我的p30都可以调试。mmp,我以为是我断点打的有问题,检查完程序和断电后发现没有问题。于是就面向网络编程搜索了下问题。就发现了下面这幅图:看来出现这种问题的不在少数。我就挨着看这个帖子想从中找到大佬们咋解决的。反映问题的人多,回答问题的机会没有,翻到最后一页我记得这是关于华为手机开启Log的方法呀(以前遇到过华为手机不显示Log.原创 2020-05-13 10:08:35 · 5414 阅读 · 8 评论 -
Android SharePreferences源码解读
前言在安卓开发中经常被用到,它是一个轻量级的存储类,通过key——value的形式用于保存一些配置参数。下面通过源码分析SharePreferences主要类首先介绍源码的分析过程中涉及到的一些类PreferenceManager:静态方法通过传入Context获取一个SharedPreferences实例ContextImpl:Context的实现类,真正获取SharedPrefer...原创 2020-04-17 16:44:25 · 410 阅读 · 0 评论 -
MultiDex的加载dex源码分析
工作流程MultiDex的工作流程具体分为两个部分,一个部分是打包构建Apk的时候,将Dex文件拆分成若干个小的Dex文件,这个Android Studio已经帮我们做了(设置 “multiDexEnabled true”),另一部分就是在启动Apk的时候,同时加载多个Dex文件(具体是加载Dex文件优化后的Odex文件,不过文件名还是.dex),这一部分工作从Android 5.0开始系统已经...原创 2020-04-11 09:51:19 · 342 阅读 · 0 评论 -
Java和Android中的类加载机制——ClassLoader
Java中的ClassLoader通过ClassLoader来查找和加载Class文件到java虚拟机中,系统ClassLoader主要包括这三种,分别是Bootstrap ClassLoader、 Extensions ClassLoader和 App ClassLoader。ExtClassLoader和AppClassLoader都继承自URLClassLoader,它们都是Launche...原创 2020-04-05 14:13:41 · 246 阅读 · 0 评论 -
Git版本控制常用命令学习汇总
前言看完了廖雪峰老师的git讲解,写篇文章总结一下,希望以后用得着的时候进来看看最简单的首先git分为工作区——暂存区——git add:所有修改放到暂存区(Stage)git commit -m "提交信息":一次性把暂存区的所有修改提交到分支git status :查看工作区状态git diff:可以查看工作区和暂存区修改内容git log :显示提交日志(显示com...原创 2020-02-14 23:58:31 · 134 阅读 · 0 评论 -
Android 5.0以上系统常用控件着色指南
简介当我们新建一个项目的时候,都会给Application或者某些Activity设置theme:<android:theme="@style/AppTheme">这时就需要我们选择或者自定义一个主题,那每个属性又都是什么含义呢?来看个例子:<style name="AppTheme" parent="@style/Theme.AppCompat.Lig...转载 2020-02-12 23:40:18 · 232 阅读 · 0 评论 -
安卓中View的事件分发机制
前言都到了二月份了,才是我2020年的第一篇文章,今天是正月十五元宵节。过了今天意味着春节正式结束了。然而大家都知道今年的春节是个非常难受痛苦的春节。新型冠状病毒席卷整个中国,在这里向奋斗在一线的医护人员致敬,您们辛苦了!! 同时也希望国家早日战胜病毒,武汉加油,中国加油!事件从Activity传递到跟ViewGroup1.当事件产生后,首先传递到当前的Activity,调用Activity...原创 2020-02-08 23:07:47 · 177 阅读 · 0 评论 -
Room of Jetpack's Architecture Components
Room也是一个安卓rom框架,但作为Android的亲儿子,并且原生支持LiveData和Rxjava嵌套使用。配合上其他谷歌组件应该会更香吧Room 主要包含三个组件: Database: 包含数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。这个类需要用@Database 注解,并满足下面条件: 必须是继承RoomDatabase的抽象类 注解中包含该...原创 2019-12-02 17:34:58 · 159 阅读 · 0 评论 -
神兵利器Dragger2学习篇
Dagger ,早有耳闻,但一直没有与他正真的认识过。Dagger 英文翻译为“匕首”,这可能就是把它称作神兵利器的原因。当我看一些开源项目在使用dagger2时,我停止了前进的步伐,查阅了网上一些层差不齐的资料后,感觉还是懵逼状态,正当我感受到了从入门到放弃的状态时,看到了一篇相对好理解一写的博文,我又开始踏上了从放弃到入门之路。背景(日常念经,了解一下)Dagger ,鼎鼎大名的Sq...原创 2019-11-19 17:06:24 · 627 阅读 · 1 评论 -
RxPermissions源码解析
前言AndroidM(6.0)开始,系统增加了运行时动态权限,目的在于保护用户隐私,防止一些敏感的危险权限在应用安装时被随意获取,用户可以清晰地选择是否允许app某项权限,就算没有给予某个权限,也不影响其他功能的使用,不至于令用户无法安装。以下权限都被列为危险权限,即需要运行时动态获取的权限。身体传感器日历摄像头通讯录地理位置麦克风电话短信存储空间原始使用方法第...原创 2019-08-12 10:53:45 · 311 阅读 · 0 评论 -
Activity的生命周期和启动模式
activity的生命周期正常情况下activity的生命周期如下图所示:整个生命周期,onCreate 和onDestroy,onStart和onStop,onResume和onPause都是一一配对的。问题当前Activity为A,用户打开新的ActivityB,B的onResume和A的onPause方法那个先执行?当启动一个新的activity是,旧的activ...原创 2019-08-12 10:52:15 · 150 阅读 · 0 评论 -
今日头条的安卓适配方案,值得收藏
文章链接,之前确实没有接触过,我简单看了一遍,可以说,这也是相对比较完美的方案,我先简单说一下这个方案的思路,它是通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题。比如,设计稿宽度是360px,那么开发这边就会把目标dp值设为360dp,在不同的设备中,动态修改density值,从而保证(手机像素宽度)px/density这个值始...原创 2018-06-26 17:39:23 · 2282 阅读 · 0 评论 -
Android中IPC机制之Messenger
前言Messenger翻译为“信使”,顾名思义,可以在不同进程中传递Message对象。Messenger是一种轻量级IPC方案,底层实现也是AIDL,只是对AIDL做了封装。Messenger的使用相对于AIDL方便多,因为Messenger是Android系统中自带的类,服务端和客户端都不用创建AIDL文件。Messenger会持有一个Handler,这个Handler用于处理接受到的信息...原创 2019-08-21 10:03:31 · 129 阅读 · 0 评论 -
aidl的学习记录3
aidl相关文章首先放出前两篇关于aidl的文章,没看过的可以看下。aidl的学习记录aidl的学习记录2前言要实现服务端每增加一本书,会主动通知客户端。不用客户端一直去调用getBooks获取最新书,采用观察者模式。当服务端有新书到来时,会通知每一个已经注册监听的客户端,并把新书对象传给客户端。具体实现1.由于AIDL无法使用普通接口所以需要新建一个aidl接口INe...原创 2019-08-16 11:02:44 · 144 阅读 · 0 评论 -
序列化与反序列化之Serializable和Parcelable
面试场景Android 开发中对两个 Activity 之前传递数据,应该很熟悉吧?嗯,当然没问题。一般采用Intent.putXXX()就可以实现各种轻量级数据的传递。那对于自定义的 Object 呢?直接使用Bundle.putSerializable()即可。需要把对象实现Serializable接口,最后使用Intent.putExtras(Bundl...原创 2019-08-13 11:19:12 · 214 阅读 · 0 评论 -
Android Handler 的工作原理解析
前言提到Handler大家应该都不会陌生,它是安卓中消息机制的主要核心类,配合MessageQueue和Looper一起使用构成了我们所熟悉的Android消息机制。Handler的主要工作是将一个任务切换到指定的线程去执行,因为Android中规定访问UI只能在主线程中进行,如果在子线程中访问UI,会抛出异常。而Android中不建议在主线程执行耗时操作否则会造成ANR,所以说。系统提供Ha...原创 2019-09-16 17:58:12 · 121 阅读 · 0 评论 -
aidl学习记录2
前言首先,这篇文章主要是基于上一篇文章aidl的学习记录来继续学习的,所以没看过上一篇文章的可以先看看。AidlBookManager文件上一篇文章通过aidl在build/generated/source/aidl/你的 flavor/下生成一个 Java 文件AidlBookManager.java。/* * This file is auto-generated. ...原创 2019-08-14 13:22:57 · 224 阅读 · 0 评论 -
aidl的学习记录
一、aidl简介aidl(Android Interface Definition Language ),安卓接口定义语言,在 Android 中,每一个进程都有自己的DalvikVM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那片狭小的空间里过完自己的一生。每个进程之间都你不知我,我不知你,就像是隔江相望的两座小岛一样,都在同一个世界里,但又...原创 2019-08-14 13:15:47 · 109 阅读 · 0 评论 -
proguard rule 惨痛教训(记录)
问题今天再给项目配置混淆打release包时,遇到了个很尴尬的问题,项目打正式包下奔溃,打测试包正常运行。下面是打包配置(app下的build.gradle),关于为什么要proguard应用程序,请看这篇文章为什么每个人都应该将ProGuard用于他们的Android应用程序android { compileSdkVersion rootProject.ext.android....原创 2018-12-18 10:24:39 · 1793 阅读 · 0 评论 -
为何要用Fragment的newInstance
Qusetion1:开发中一直在用Fragment,使用Fragment接受参数是经常遇到的问题,为什么不用构造方法,而用newInstance呢?,构造方法不是更快更省事么?Androidstudio中右键直接创建Fragment:Answer1:默认会生成如下:/** * A simple {@link Fragment} subclass. * Activitie...原创 2018-12-04 10:48:22 · 1074 阅读 · 0 评论 -
CoordinatorLayout打造折叠悬浮效果
一、CoordinatorLayout是一个ViewGroup,遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的折叠悬浮效果。二、AppBarLayout是一个vertical的LinearLayout,其子View应通过下面两种方式来提供他们的Behavior。...原创 2018-12-04 10:39:20 · 962 阅读 · 0 评论 -
BottomNavigationView去除动画,大于3项时不显示文字的最新解决方案
背景今天在用 BottomNavigationView实现底部导航栏时出现了个小问题,效果如下:当使用BottomNavigationView菜单项多于3个时,去除动画效果,显示菜单项文字。初级方案在网上看到解决方案是这样:/** * 创建时间:2018/10/30 * 编写人:kanghb * 功能描述:当使用BottomNavigationView菜单项多于3个...原创 2018-12-04 10:36:20 · 990 阅读 · 0 评论 -
WanAndroid,一款每日推荐优质文章App
WanAndroidWanAndroid,一款每日推荐优质文章App,项目涉及API均来自鸿洋大神的玩Android,基于Material Design + MVP + RxJava2 + Retrofit + Litepal + Glide出于学习的目的做了这款Material Design风格的简洁的阅读应用,玩Android是一个每日推荐20~30篇Android优质文章的站点,提供...原创 2018-12-04 10:32:02 · 767 阅读 · 0 评论 -
安卓简单绘制直方图思路
最近看了看HenCoder Android 开发进阶:自定义 View 1-1 绘制基础,作者讲的很全面,受益匪浅,顺手写了下常用Drawxxx()方法,练习了一下,以免忘记了。这里说一下比价复杂的直方图,虽然很多第三方可以直接拿来用,但是我还是自己随便写了个Demo,知其所以然。代码很简单:public class Practice10HistogramView extends View { ...原创 2018-06-08 16:49:34 · 924 阅读 · 2 评论 -
Recycleview的SnapHelper
SnapHelper是RecycleView在24.2.0版本中新增的辅助类,用于在RecycleView滚动结束时,将Item对其到某个位置。SnapHelpershigechoxuian是个抽象类,继承了RecycleView.OnFlingListener类 recycleview使用SnapHelper非常简单,只需要调用一行代码:attachToRecyclerView(...原创 2018-06-15 13:28:28 · 306 阅读 · 0 评论 -
Retrofit绑定证书实现HTTPS单项认证
客户端内置服务器的证书,我们在校验服务端证书的时候只比对和App内置的证书是否完全相同,如果不同则断开连接。那么此时再遭遇中间人攻击劫持我们的请求时由于黑客服务器没有相应的证书,此时HTTPS请求校验不通过,则无法与黑客的服务器建立起连接。那么接下来我们就结合Retrofit以访问12306为例来实现HTTPS的单项认证。 首先从12306网站下载签名证书,并放置到我们项目资源目录raw下。然后根...原创 2018-04-20 15:06:36 · 931 阅读 · 1 评论 -
安卓多渠道打包变化路程
今天看了看腾讯的vasdolly实现原理,写的很好,可以说记录了安卓多渠道打包的演变路程,特来写篇博客记录下。首先声明:本文摘自https://github.com/Tencent/VasDolly/wiki/VasDolly实现原理。概述众所周知,因为国内Android应用分发市场的现状,我们在发布APP时,一般需要生成多个渠道包,上传到不同的应用市场。这些渠道包需要包含不同的渠道信息,在APP...原创 2018-04-24 15:59:45 · 194 阅读 · 0 评论 -
自定义ChooseMoneyLayout选择金额
package jiuyuhulian.com.merchantstoreApp.view;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.view.Vie...原创 2017-03-25 10:28:29 · 431 阅读 · 0 评论 -
Navigation of Jetpack's Architecture Components
前言Navigation 是应用程序设计的重要组成部分。 通过Navigation ,可以设计允许用户在应用内的不同内容区域中移动,移入和移出的交互。说白了其实是用来管理 APP 里页面跳转的。使用如果您想使用Android Studio导航,则必须使用Android Studio 3.3或更高版本。要向项目添加导航图,请执行以下操作: 在“项目”窗口中,右键单击r...原创 2019-03-04 16:53:02 · 128 阅读 · 0 评论 -
带你初识Kotlin(一)
What isKotlin?Kotlin是JVM和Android的实用编程语言,结合了OO和功能特性,专注于互操作性,安全性,清晰度和工具支持。本文记录自己学习kotlin认为需要记录的重点,如果需要详细学习,请点击Kotlin中文文档学习。基本类型在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,它们的实现是优化过的,但对用户来说它们就像普通的类一样...原创 2019-03-07 14:19:46 · 163 阅读 · 0 评论 -
方舟编译器的引发的学习惨案
昨天公司给了部p30,开机体验了下,确实不错。运存8g+内存128g+cpu麒麟980搭载EMUI9.1,重点是华为公布的方舟编译器。并向业界开源改工程,于是赶紧上网学习了下关于Android ART JVM的知识,也可以给别人吹吹牛逼方舟编译器到底干了个啥。简介方舟编译器可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。根据华为实...原创 2019-07-31 16:23:45 · 766 阅读 · 0 评论