Android
文章平均质量分 92
ShuSheng007
人活着要有梦想,万一实现了呢!
展开
-
秒懂Https之如何在Android中使用自签名证书
概述原创 2020-08-08 16:15:41 · 2130 阅读 · 1 评论 -
秒懂Android开发之DataBinding详解 (part 2)
文章目录概述DataBinding的绑定规则绑定原理绑定规则BindingAdatper如何写一个BindingAdapter多属性BindingAdapter概述在秒懂Android开发之DataBinding详解 (part 1)一文中我们已经了解并上手了DataBinding, 接下来就该看看其核心机制BindingAdapter了。学习了DataBinding而不理解BindingAdapter的话,只能算是学到了皮毛。DataBinding的绑定规则你有没有想过当我们在layout文件中对原创 2020-05-26 22:17:57 · 643 阅读 · 0 评论 -
秒懂Android开发之DataBinding详解 (part 1)
【版权申明】非商业目的注明出处可自由转载博文地址:出自:shusheng007文章目录概述DataBinding 总览简介解决的问题及其使用场景实战使用绑定可观察数据(observable data)运行结果总结概述DataBinding 最早应该是在2015年末的时候就被提出了,那我为什么现在才写一些相关的文章呢?因为我不喜欢也不看好这项技术!那为什么又要写呢?因为目前公司的项目中在用,无论我喜不喜欢都需要使用,我的吃饭啊!我是不会在自己可以主导的项目中主动使用此技术的,那为什么我这么讨厌.原创 2020-05-23 22:35:35 · 1576 阅读 · 0 评论 -
秒懂Android开发之MotionLayout简单上手
概述MotionLayoutMotionLayout: 是ConstraintLayout 子类, 可以通过ConstraintLayout 转换而来MotionScene:描述动画一个动画场景,放在xml 文件夹内,通过MotionLayout 的属性设置,如下所示 app:layoutDescription="@xml/activity_motion_scene"ConstraintSet :动画的关键点快照,最少有两个开始快照和结束快照Transition : 用于从开始快照运动到结原创 2020-05-21 19:53:51 · 1719 阅读 · 1 评论 -
如何快速写一款小而美的《上滑无限加载的控件》
前言在日常从事Android开发工作时,经常会遇到下拉刷新列表页面,上拉自动加载列表的需求,GitHub上有很多关于这方面的功能极其强大的类库了,那我们为什么还要自己写一个呢?因为那些类库实在是太重了!很多时候我们只使用其5%功能,但却不得不忍受剩下95%“无用”功能和复杂性。无限加载RecyclerView一般情况下,我们使用Android原生提供的那些控件稍作组合或修改即可完成绝大部...原创 2020-04-28 21:16:50 · 394 阅读 · 0 评论 -
秒懂Android开发之 android:windowSoftInputMode 属性详解
【版权申明】非商业目的可自由转载博文地址:出自:shusheng007文章目录概述windowSoftInputMode软键盘可见性stateUnspecifiedstateUnchangedstateHiddenstateAlwaysHiddenstateVisiblestateAlwaysVisible软键盘与Window的布局关系adjustResizeadjustPanadjus...原创 2020-02-09 18:16:42 · 11744 阅读 · 0 评论 -
深入理解Android虚拟机及编译系统
一个Android APP是从开发到运行在手机上,期间发了哪些事呢?JVM与Android的关系Java字节码基础对Android构建系统有个了解对App运行原理有一定的了解,理解AOT,JIT, ART 等相关术语CPU 与JVM本文读者应该都知道,我们的程序是运行在设备的CPU上的,然而这个世界是多样性的,CPU也不例外。现实中存在各种架构的CPU: ARM, Arm64, x...原创 2019-12-05 22:25:01 · 1003 阅读 · 0 评论 -
秒懂Android开发之ViewBinding,一代神器ButterKnife的终结者
概述Android大神 JakeWharton 开发的一代神器 ButterKnife 即将落幕了。怎么回事呢?就是因为View Binding 的横空出世。在那个满屏都是findViewById的蛮荒年代,JakeWharton 大神给我们送来了神器ButterKnife,使我们从石器时代进化到了青铜时代,这次ViewBinding是不是又将使我们跨越到一个时代,俗话说就是又简单了,估计再过1...原创 2019-11-26 22:18:48 · 7849 阅读 · 3 评论 -
Android开发之如何在App间安全地共享文件(FileProvider详解)?
分享File 给其他APP,例如有两个App AppProvider, AppConsumer AppProvider要分享文件 girl.jpg 给AppConsumer 使用以前是基于文件系统做权限管理要让AppConsumer 可以访问AppProvider的文件 girl.jpg,那么AppProvider就必须将此文件设置为可访问的,而且需要告知AppConsu...原创 2019-11-24 19:21:45 · 3623 阅读 · 0 评论 -
Android开发者之数据存储,你真的会存储数据吗?
考虑因素:数据尺寸,数据类型,安全性1.:文件系统:内部文件系统 :除了root的设备,用户及其他APP均不可访问,而且随着APP的卸载而自动删除内部文件系统内部又存在一个持久目录与一个缓存目录缓存目录:当设备存储不足时,系统会删除这些缓存以释放空间外部文件系统 :例如sd卡,外接硬盘等, 由于其可不可预知性,所以使用外部存储一定要先检查其是否可用。用户及其他APP均可以访问,APP卸...原创 2019-10-31 15:38:34 · 1945 阅读 · 0 评论 -
升级到AndroidStudio3.0指南
老大发布AndroidStudio3.0已经有一段时间了,前段时间已经将公司的项目的开发环境升级到了AS3.0,现记录如下,希望对同行有些许帮助。 其实本质是 升级Android Plugin 到 3.0升级的原因AS3.0原生完全支持Kotlin编译速度更快使用户对项目中模块控制力更强升级方法第一步:升级Gradle 版本Android plugin 3.0.0 需要4.1及以原创 2017-11-17 23:24:38 · 4065 阅读 · 0 评论 -
RxJava2操作符之map
概述RxJava2 的名气是越来越大,对应的在开发中使用的就越来越多,而日常开发中最长打交道的就是那些操作符(Operators),本文目的仅仅是为了记录map操作符的使用方法及场景,不会太多涉及Rxjava2本身的知识。如需详细学习,请移步官方网址:RxJava2官方地址操作符首先应该明白操作符是用来干什么的,RxJava以存在一个数据流的概念,从Observable发射数据,数据流经过...原创 2018-10-21 18:32:35 · 1523 阅读 · 0 评论 -
RxJava2操作符之flatMap与concatMap
概述在前文RxJava2操作符之map中记录了map的使用方法及场景,而日常开发中除了map,flatMap以及concatMap使用的也比较多,那这篇文章就记录一下这两个操作符的情况。RxJava2操作符之map中介绍了一些基础知识以及学习方法,强烈建议先大体浏览一下。flatMap使用场景第一:比较典型的就是可以使用flatMap解决嵌套回调的问题,例如我们有两个API,A和B,B的...原创 2018-10-21 19:29:08 · 1085 阅读 · 0 评论 -
Android开发之显示篇(弄懂ppi、dpi、pt、px、dp、dip、sp之间的关系看这一篇就够了)
First what do they stand for?sp stands for scale-independent pixels.dp or dip (just use dp in your code if you’re cool) stands for density-independent pixels.What is the difference between the tw...原创 2018-12-25 16:00:01 · 2868 阅读 · 0 评论 -
秒懂Android注解处理器(Android Annotation Processor)
【版权申明】非商业目的可自由转载博文地址:出自:shusheng007文章目录前言概述注解处理器预备知识工作原理项目结构定义注解定义注解处理器原理创建项目定义初始化模块如何使用总结前言现在Android开发中许多流行的第三方库都使用了注解生成代码的方式,例如 ButterKnife, Dagger2,Glide等等,初次接触时感觉好神奇,后来感觉很实用,再后来想知道怎么实现的,再后来...原创 2019-06-02 08:58:37 · 7475 阅读 · 0 评论 -
如何调试Android Annotation Processor程序
概述当我们开发一个Android Annotation Processor的时候就需要调试我们的代码,但是Annotation Processor 的执行是于编译并行执行的,所以如果我们只是按照通常的方式简单的打一个断点,是不会中断的。方法我们需要使用远程调试,我们就以上篇文章提到的 AnnotationProcessorToy为例。1配置remote configuration在And...原创 2019-06-19 10:33:39 · 1016 阅读 · 0 评论 -
秒懂Android Studio 让Android开发变得如此简单
概述以下命令只适用于Windows/Linux环境重构相关代码移动youShift + Alt + ↑ and Shift + Alt + ↓2.上下移动方法On Windows/Linux: Shift + Ctrl + ↑ and Shift + Ctrl + ↓3:将静态变量和静态方法移动到其他类里面F64.删除代码Ctrl + Y5.复制并粘贴代码Ctrl + D...原创 2019-07-15 14:58:51 · 2338 阅读 · 0 评论 -
Android开发之在Webview中全屏播放视频
【版权申明】非商业目的可自由转载博文地址:出自:shusheng007系列文章Android开发之Webview中原生与JS交互Android开发之从Webview中选择本机文件概述出于对成本或者其他原因的考虑,在移动开发中有时会采用混合开发的方式,其中一种方式就是让Web页面跑在原生的WebView里面。本文我们来谈论一下如何在webview中全屏播放视频。实现方法本文只谈...原创 2019-08-25 10:25:03 · 1446 阅读 · 1 评论 -
Android开发之从Webview中选择本机文件
从webview中标签打开本地的文件选择器选择文件。这个需求大概有两种实现方式:第一种:使用Webview与JS交互的方式,当点击H5页面中的选择文件按钮,不要求是<input>标签,然后通过JS调用原生方法打开文件选择器。第二种:使用H5的<input>标签,通过webview提供的固有机制来打开文件选择器。如何选择那么以哪种方式更加合适呢,这个需要放到具体应用...原创 2019-08-18 09:18:44 · 3388 阅读 · 1 评论 -
Android开发之奔溃处理,知道你的App为啥崩溃了吗?
在Android开发中任何App都存在crash的可能性,所以当奔溃后如何获得有用的信息进而修复这个问题,防止再次发生成了我们必须面对的需求。Android 本身提供了一套处理由于未捕获的异常引起的奔溃机制,那就是使用下面这个定义在Thread类内部的接口。@FunctionalInterfacepublic interface UncaughtExceptionHandler{ ...原创 2019-09-30 23:49:12 · 973 阅读 · 0 评论 -
RxJava2操作符之Zip
public class MainActivity extends AppCompatActivity { private Button btnZip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...原创 2018-10-22 23:48:42 · 2934 阅读 · 0 评论 -
Android开发之Webview中原生与JS交互
文章目录概述使用场景交互方式Java调用JS代码JS调用Java代码总结概述由于手机硬件资源的快速提升,使得采用混合开发的可能性逐渐成为现实并且流行起来。Android开发中最为简单的方式就是通过Webview来嵌入一个网页使web作为App的一部分。使用场景非重交互场景非计算密集型场景对UI复杂度要求不高的场景以上可见,《王者荣耀》断然不会使用混合开发的,其实谷歌举了两个最适合的...原创 2018-10-14 21:45:50 · 3568 阅读 · 0 评论 -
微信支付接入完全解析之前期准备(1)
前段时间在一个App中接入了微信支付功能,想来也稳定运行快一个月了,回头想想自己接入微信支付时候踩过的坑,决定写一篇自己当初想要搜寻的文章,文章准备分3篇完成。 第一篇:微信支付前期准备 第二篇:微信支付接入客户端部分(以Android为例) 第三篇:微信支付接入服务端部分微信支付支持多种支付方式,具体可以查看微信支付官网。本文将讲解APP支付 注册App相...原创 2018-03-12 23:49:32 · 1018 阅读 · 1 评论 -
Google发布ARCore1.0及更新Google Lens
老大最近正式发布了ARCore1.0,对AR感兴趣的同学可以着手准备开发了,相信今年国内的厂商例如小米,华为,Vivo就会有支持ARCore的设备了。Google正在与国内这些厂商接洽,而且AR应用也是可以通过小米和华为的应用市场来分发的。ARCore及Google LensGoogle通过ARCore及Google透镜,来使智能手机的摄像头更加智能化。ARCore可以使开发者构建...原创 2018-02-24 10:57:32 · 866 阅读 · 0 评论 -
Android开发中如何做单元测试
为什么要做测试撰写测试有以下好处:确保开发出来的app功能是正确的保证新增加的功能开发不会影响原来的功能,就是说新写的代码不会使原来正常工作的代码产生bug当采用测试驱动开发模式时,测试有助于模块化和迭代化。Android中的单元测试类型Android中的单元测试有两种类型本地单元测试:这种测试是运行在开发机器的JVM上的。存放在项目中app/src/test/j原创 2018-01-11 14:36:35 · 3286 阅读 · 0 评论 -
MVP在Android中2种实现(2)
对此题目有兴趣的同学都是知道至少了解这个东西,在此我不准备讲太多的理论,因为互联网上对MVP的介绍铺天盖地了.例如这位同学的文章就很精彩 Android MVP 详解(上),本人只是介绍两种MVP在Android的实现方法。 第一种:MVP在Android中2种实现(1) 第二种: MVP在Android中2种实现(2)本文是对 MVP在Android中2种实现(1)中讲述的M原创 2017-09-11 21:48:51 · 1277 阅读 · 6 评论 -
Android NDK 初探
1.Android NDK 介绍 NDK(Native Develop Kit 原生开发工具包)是一组可让在 Android 应用中利用 C 和 C++ 代码的工具。 可以直接将C和C++代码写在项目里,直接构建,也可以使用其他人开发好的C 或者C++库构建自己的项目。什么情况下需要NDK:计算密集型应用,例如游戏或物理模拟等性能关键项目。重用已经存在的 C 或 C++ 库。...原创 2017-06-29 20:22:35 · 473 阅读 · 0 评论 -
Android 在程序中关闭和打开屏幕
需求:在程序中(通过事件等方式)打开和关闭屏幕思路:一般情况下,关闭屏幕不是将屏幕真的关闭,而是将屏幕的亮度调到最低。一般情况下Android设备对屏幕可 调节的最低亮度是有一个限制的。如果你的设备真的允许完全关闭屏幕,则只能考虑为这款设备的特性,在你 写程序时是要考虑到大多数设备的。实现: //启用屏幕常亮功能 private voi原创 2015-04-07 11:40:16 · 2096 阅读 · 0 评论 -
微信支付接入完全解析之Android客户端(2)
前段时间在一个App中接入了微信支付功能,想来也稳定运行快一个月了,回头想想自己接入微信支付时候踩过的坑,决定写一篇自己当初想要搜寻的文章,文章准备分3篇完成。 第一篇:微信支付前期准备 第二篇:微信支付接入客户端部分(以Android为例) 第三篇:微信支付接入服务端部分客户端接入流程介绍只要清楚了接入流程,微信支付客户端的接入是很简单的。点击你...原创 2018-03-13 17:00:48 · 833 阅读 · 1 评论 -
什么是AAR文件以及如何在Android开发中使用
上周部门知识分享会上分享了关于如何在Android开发中使用gradle的话题,其中涉及到了aar文件的使用,经过一番讨论引申出了更多有趣的问题,留下了很多迷惑之处,经过研究后决定将成果记录于此。概述aar是什么?aar与jar有什么异同?如何生成AAR文件如何使用AAR文件第一种方法:第二种方法:代码分析概述aar是什么?aar是A...原创 2018-03-23 15:12:47 · 24161 阅读 · 1 评论 -
微信支付接入完全解析之Java服务端(3)
前段时间在一个App中接入了微信支付功能,想来也稳定运行快一个月了,回头想想自己接入微信支付时候踩过的坑,决定写一篇自己当初想要搜寻的文章,文章准备分3篇完成。 第一篇:微信支付前期准备 第二篇:微信支付接入客户端部分(以Android为例) 第三篇:微信支付接入服务端部分关于支付流程在第一篇和第二篇文章中说的很清楚了,如果不了解请回看。后端其实就是按照微信支付...原创 2018-03-13 23:45:50 · 807 阅读 · 0 评论 -
秒懂Retrofit2之带进度条的文件下载实现方法
概述Retrofit这个Okhttp的封装库俨然已经成为Android开发中网络请求的标配,使用其处理Http请求非常方便,但是涉及到下载功能时,特别是需要实时获得下载进度的场景时就比较棘手了,而下载需要获得下载进度又属于刚需,所以本文总结一下这部分的知识。实现效果实现方法我们知道Retrofit是Okhttp的封装库,真正发起网络请求的是OkHttp,而OkHttp拥有强...原创 2018-09-07 00:06:02 · 4944 阅读 · 11 评论 -
Android开发之利用ConditionVariable同步线程结果
概述在我们日常开发当中有时会遇到这样的场景,例如一个操作依赖3个数据,而这三个数据是通过三个线程分别计算得到的,而这个3个计算结果完成的先后顺序是不能事先确定的,那我们就得想办法同步这3个线程的结果。解决方案1:比较笨的办法就是为这个三个线程操作定义3个flag,用来指示这个3个线程是否完成了自己的任务 2:在需要使用这个3个线程的结果的那个方法里面判断这个3个flag是否同时为...原创 2018-09-16 12:08:31 · 604 阅读 · 0 评论 -
Android开发之监听软键盘状态(弹出收回)
概述在我们开发过程中,有时需要监听手机键盘状态,但是Android没有这样的API,所以需要我们自己处理。实现方案 首先我们应该思考,在键盘弹出与隐藏这个动作我们可以获得什么有用的信息,public class KeyboardStateObserver { private static final String TAG = KeyboardStateObserver....原创 2018-08-08 23:22:34 · 9954 阅读 · 2 评论 -
Android开发之自定义随机验证码控件
概述前段时间,开发中需要一个随机验证码的功能。发现身边很多做移动开发的同学以及产品经理竟然不知道这个随机验证码是干什么用的?他们竟然觉得这个是为了UI页面的美观,这真是令人大跌眼镜。我们做一件事情首先应该明白为什么做这件事情,解决什么问题,这都搞不清,做它何用?随机验证码的作用 验证码(CAPTCHA)是“Completely Automated Public Turing t...原创 2018-08-07 09:39:02 · 1132 阅读 · 0 评论 -
秒懂依赖注入及 Dagger2 的实用技能(如何在Android中使用)
版权申明】非商业目的可自由转载 博文地址: 出自:shusheng007前言古人曰:纸上得来终觉浅,绝知此事要躬行,这话说的是真你妈对啊,对于编程这件事似乎更是真理。2016年的时候就首次了解过dagger,但是没有去编码实现,当时哥们真觉得懂了,但是最近有个项目要使用Dagger2,突然发现还是不知道如何下手,日了个狗,于是又研究了一番,躬行了一下,总结于此,让...原创 2018-07-15 13:55:16 · 7077 阅读 · 12 评论 -
秒懂Android属性动画
自从Android3.0 版本加入属性动画后,在平时的开发中多多少少也使用了,但是从来没有对其做一个系统的分析和总结,最近刚好有点时间,来对这个话题做一个分析和总结。概述动画对于GUI程序总是一个绕不过的话题,适当的动画可以使我们的人机交互界面更加的生动有趣,所以Android也提供了一套自己的动画体系。Android动画体系至Android3.0以后(其实都不用再提这...原创 2018-05-29 21:42:48 · 537 阅读 · 0 评论 -
用Retrofit+RxJava2封装优雅的网络请求框架
最近难得赋闲在家,看到网上讲Retrofit2的文章,发现自己以前Android项目使用封装方式反而更加简单易用,所以决定花点时间整理分享一下,让做Android开发的小伙伴们可以可以更优雅的处理网络请求。概述首先,这是一篇讲解如何封装Retrofit与RxJava2的文章,所以需要阅读者对Retrofit与RxJava2有一定的了解,不然不太容易看明白。现在OkHttp + ...原创 2018-05-26 17:11:33 · 3038 阅读 · 6 评论 -
秒懂Android Service组件(1)
Android出来这么些年,发现国内程序员关于Android开发的文章写得越来越好了,有的真让人赞叹。不过再好也是别人的,自己只有亲自实践亲自总结,才能夯实基础,提升自我,尽力向大神的水平靠拢。概述如何使用启动模式使用方法1.声明标签2.创建服务3.启动服务绑定模式使用方法1.声明标签2.创建服务3.绑定服务总结概述真正做Android开发算来应...原创 2018-03-27 17:13:28 · 374 阅读 · 0 评论 -
自定义控件学习之钟表制作
谷歌已经为我们提供了非常丰富的控件,一般任务均可完成,但是有时候一些特别任务还是需要我们自定义控件来完成。本文尝试完成一个自定义钟表控件。package com.shusheng007.customviews;import com.shusheng007.mp3plaryer.R;import android.content.BroadcastReceiver;import翻译 2015-04-17 13:35:59 · 943 阅读 · 0 评论