android
搞什么灯儿
http://my.csdn.net/?ref=toolbar#
展开
-
使用LiveData+Retrofit,实现具有生命周期的网络请求
(本文代码示例采用Kotlin编写)1. 前言此前我们一直是使用RxJava+Retrofit实现网络请求,直接使用这种请求方式是没有和Activity或Fragment的生命周期绑定的,就容易出现内存泄漏或者程序崩溃的情况。因此通常还会加上一个RxlifeCycle来保证和我们的生命周期绑定就变成了RxJava+Retrofit+RxLifeCycle这种结构了,但是自从Android官方推出了LiveData组件,因为LiveData是带有生命周期属性的,我们就可以抛弃原来的写法,来创造属于自己的一原创 2020-11-05 14:40:57 · 1706 阅读 · 0 评论 -
开发技巧之Android打包自动命名
Tips-Gradle 打包自动命名一般的,我们构建运行App的时候,通常会在build/output文件夹下面生成一个app-debug.apk 或者app-release.apk,这样如果不做修改的拷贝到了其他地方或者发给别人,过后再看这个名称的apk文件,我们很难一眼就知道这是一个什么文件,是哪个版本的文件。所以这里我们通过Gradle提供给我们的一些方法属性,我们可以自己定义文件输出的命名规则,这里给出一份简单的规则,大家可以根据自己的需要添加修改。这里我们想要的命名规则比如是:微信_9.5.原创 2020-06-11 14:18:30 · 1291 阅读 · 0 评论 -
Android学习------一教就会的Android换肤实现
1.前言说到换肤,大家并不陌生,淘宝,京东等App一到节假日就会换上一身新衣服,当然里面还会有一些皮肤提供给你自己下载应用。换肤和常见的暗黑模式明亮模式有点类似,但是这种模式大多数是通过更改主题的方式来实现的,当我们要实现一些比较复杂的,比如给某个按钮,文本更换添加背景图片,更改字体字好大小等操作就不是很方便了。今天要将的就是如何实现自定义换肤。2.需求产品要求App内部需要根据不同的节假日或者根据24节气App里面的图标背景,字体颜色样式需要有不一样的变化。2.1 分析需求根据上面的需求原创 2020-06-08 10:56:33 · 522 阅读 · 0 评论 -
Android AOP,从需求到实战(AspectJ)
推荐链接:https://blog.csdn.net/Innost/article/details/493873951.前言关于OOP和AOP的区别介绍,本文就不再详细阐述了,一种是面向对象编程,一种是面向切面编程。从编码思想上有些不太一样。下面我们直接从实战操作中来学习Android中的AOP2.需求2.1 需要给每个方法加上日志打印我们先写一段代码 作为基础代码,我们在此之上 加上我...原创 2019-12-24 14:45:07 · 527 阅读 · 0 评论 -
代码优化------Snackbar内存泄漏分析及解决
SnckBar内存泄漏分析及解决1 分析工具MemoryAnalyzer(MAT)2 问题代码 fun initView() { /*** 省略 ****/ mSnackbar = Snackbar.make(view, "确定要退出吗?", Snackbar.LENGTH_LONG) mSnackbar!!.setAction("确定") { v ->...原创 2019-12-13 16:12:00 · 414 阅读 · 1 评论 -
Android初学-----px2dp,dp2px
public int dpToPx(int dp) { DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));原创 2015-07-30 10:19:31 · 6272 阅读 · 4 评论 -
Android初学------系统设置之设置输入法
/*** * 获取默认输入法 * @return */ public String getDefaultInputMethod(){ return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); } /*** * 设置默认输入原创 2015-05-13 10:37:29 · 2253 阅读 · 2 评论 -
android学习之-----使用TouchDelegate增大触摸面积
需求: 有时候由于界面上图标过小 ,导致点击触摸的区域太小不好操作,或者有时候会发生误操作。解决办法: 如果是图片设置src属性,设置padding ,或者外层嵌套一层布局 通过外层布局的点击事件来触发响应操作。 总的来说主要还是需要增大可触摸的区域。 TouchDelegate 官方解释:https://developer原创 2016-10-13 15:06:28 · 2295 阅读 · 0 评论 -
android学习-----使用TabLayout实现Tab选项卡以及遇到的一些问题(一)
TabLayout的使用前言: 更好用,更方便,更简洁link:https://developer.android.google.cn/reference/android/support/design/widget/TabLayout.html1.开始1.1 添加TabLayout的引用compile 'com.android.support:desig原创 2017-02-09 17:31:50 · 6143 阅读 · 1 评论 -
android学习-----使用TabLayout实现Tab选项卡以及遇到的一些问题(二)
TabLayout+ViewPager+Fragment的使用1. Xml中添加一个ViewPager<android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_hei原创 2017-02-13 11:09:59 · 5612 阅读 · 0 评论 -
(Jenkins)工具使用------android studio Jenkins插件配置
android studio 配置Jenkins插件步骤第一步 安装插件 安装完成以后重启android studio 重启后右上角有个Jenkins图标 第二步 配置参数 自己填写你的服务器地址,用户名密码等信息,这里注意的是Crumb Data 数据的来源在浏览器输入 http://192.原创 2017-03-02 13:55:24 · 2613 阅读 · 2 评论 -
android开发-----关于Java.lang.UnsatisfiedLinkError的错误解决办法
在android开发中,通常引用了一些第三方的sdk的so库之后,不同机型之间就会发生这样一个错误,Java.lang.UnsatisfiedLinkError这是由于程序运行的时候未获取到争取的so库包产生的一个错误,打个比方(比方不是人)你原先的项目中只使用了A公司提供的so包,他只提供了armeabi这个架构的so包,后来项目需要又引用了B公司的提原创 2017-03-31 15:35:45 · 49883 阅读 · 3 评论 -
Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题
问题,1 由于Retrofit默认连接超时时间只有10s 某些情况下可能连接时间会超过10s,这个时候就会报出SocketTimeoutException 这个时候我们就需要自己设置超时间,2 很多时候需要查看自己请求的网络地址,或者请求参数,当然也可以借助抓包工具,通过OKHttp自带的可以支持打印Log,我们在控制台就可以看见请求信息或返回的数据,也不需要另外开工具,也还是原创 2017-04-11 16:00:26 · 4143 阅读 · 0 评论 -
Data binding的使用(一)-----hello word
Data binding的使用(一)官网地址:Google Android Data Binding Library1.准备工作Data Binding是一个兼容库,支持到Android2.1以上,要使用 data binding 保证你的Gradle Plugin 在1.5版本或者高过1.5,如果低于就请更新你的Gradle Plugin,并且请确保你在你的Android SDK Manager里原创 2017-04-12 12:25:16 · 816 阅读 · 0 评论 -
Gradle-----通过Gradle实现同一套代码开发生成不同的apk
抛出问题: 需求: 在开发工作中,有时候经常会遇到一套代码要求开发出2个相似的应用 ,只需要改一些名称,改一下主题颜色,或者部分逻辑处理修改等等。 解决办法: 以前的解决办法: 因为以前是eclipse项目,所以做法是项目复制一份,根据需要,去修改对应的颜色 应用名称等等,做起来很繁杂,而且出了bug,或者新的需求,每次一套代码改了 还要去改另一套代码。原创 2016-09-26 16:58:41 · 2196 阅读 · 0 评论 -
android温故知新-----android 本地广播实例(LocalBroadcastManager)
特点:1.能够防止其他app接收到广播消息获取敏感数据,确保数据安全。2.只能在代码中使用动态注册的方式,java代码public class MainActivity extends AppCompatActivity { private LocalBroadcastManager mLocalBroadcastManager; private B原创 2016-10-21 11:18:59 · 680 阅读 · 0 评论 -
Android初学-----环形进度条 带渐变
/** * * SeekArc.java * * This is a class that functions much like a SeekBar but follows a circle path * instead of a straight line. * * @author Neil Davies * */public class SeekArc exten原创 2015-09-10 11:35:21 · 1908 阅读 · 0 评论 -
android------通用ViewHolder 通用Adapter
参考学习自慕课网:http://www.imooc.com/learn/372觉得这种写法确实挺好的,自己也看了视频自己回忆着写了一遍。 以后也准备用这种方式啦,,,,,直接贴代码吧、、、有错误的地方还望大家指出/*** * 通用ViewHolder类* @ClassName: CommonViewHolder * @Description: TODO(这里用一句原创 2015-11-09 12:32:42 · 723 阅读 · 0 评论 -
Android学习-----DrawableCompat(给Drawable 着色)的使用
前言:不管这事啥东西,能解决问题就是好东西 DrawableCompat 根据名称可以看出是Drawable的兼容类 ,可以干一些事。平时在工作中需要通过多张图片显示不同的状态,现在用这个玩意就可以只用一张图片显示多个状态啦,想想还有点小鸡动。正文:先看效果:可以一张图片实现多种状态显示此处展示了按下和默认时候的颜色实现:先看代码吧public cl原创 2016-01-27 21:48:13 · 6369 阅读 · 1 评论 -
Android 打包Activity 供第三方调用
目的:编写自己的应用程序功能代码供其他人调用案例:编写xxxa 项目和xxxb 项目 xxxa项目供xxxb调用xxxa项目关键代码:publicclassXXXAActivityextendsActivity { privateButtonbutton; @Override protected原创 2016-03-14 18:12:14 · 518 阅读 · 0 评论 -
Android学习------抓取Android开发技术周报(一)
前言:认为开发技术周报里面的内容挺不错的, 每次出来了都要去看看,还是能学到不少东西,也不知道有没有app 我也没去找,试着自己写一个吧,用一下以前没用过的技术。试着做做嘛,动手才能学得更快嘛。准备工作:本次抓取的Android开发技术周报网址为:http://androidweekly.cn/ 谢谢@脉脉不得语运用到的一点技术为:RxJava RxAndroid Retrofi原创 2016-02-23 16:19:34 · 911 阅读 · 0 评论 -
Android学习------运用 Filter 实现关键字搜索,并且高亮显示关键字
新鲜出炉的demo 代码有点乱 讲究着看吧。。。头晕。。第一步 数据初始化 第二步监听 输入框里面的 关键字 进行过滤 运用Filter 过滤第三步 在自己的adapter类里面实现自己的 Filterable 接口 重写 getFilter()方法 返回自己的Filter对象第四步 建立自己的Filter对象 并且在 p原创 2015-11-12 16:20:04 · 5652 阅读 · 6 评论 -
android学习-----自定义View 加载动画
开始:就要看效果了。一个gif动画效果 但是只需要其中一部分,就没有现成的gif动画而且其中有一部分要可控。本来就不会自定义view的我,就慢慢琢磨吧。先看原图效果:在看我的效果图然后:就要写代码了。1.首先背景是一张图片,当做背景图。 2.进度的view部分放置在背景图中间。(这里我还是没搞懂原创 2016-04-08 10:38:21 · 726 阅读 · 0 评论 -
Android学习之----利用DownLoadManager实现版本升级
参考 http://www.trinea.cn/android/android-downloadmanager/http://jk2k.com/2016/01/install-apk-automatically-after-the-download-is-complete-with-download-manager/效果:通知栏显示结果不写demo了原创 2016-05-06 11:31:53 · 1657 阅读 · 0 评论 -
Android学习------Dimens文件生成
public class pxToDp { // 12sp public static int BASE_DPI = 160; public static void main(String[] args) { // xxdpi(); float density_xxhdpi = 480.0f; float density_xhdpi = 320.0f; float dens原创 2016-08-03 11:56:34 · 3334 阅读 · 0 评论 -
Data binding的使用(二)-----事件的绑定监听
上一篇文章Data binding的使用(一)讲了一些基础的关于如何开始使用Data Binding做了一些介绍,这篇文章继续讲解使用Data Binding的一些其他操作,比如点击事件,或者监听对象的值的变化,做出及时的修改。补充前面前面忘了说了,Data Binding中可传递任意类型的参数,比如int,String,数组或者Drawable对象,但是注意某些对象需要使用全称比如Drawable原创 2017-04-12 16:29:02 · 6800 阅读 · 1 评论 -
Data binding的使用(三)----监听数据的变化
上一篇文章 Data binding的使用二讲了Data binding监听事件绑定的操作。如何根据绑定值的变化在UI中同步显示这里有2种操作方式,一种是Observable Objects,观察对象的变化,一种是ObservableFields,Observable Collections观察数据对象字段的变化。Observable Objects新建类public class User2 ext原创 2017-04-14 17:25:27 · 4113 阅读 · 0 评论 -
Android学习------使用RenderScript ,ScriptIntrinsicBlur实现高斯模糊
https://developer.android.google.cn/guide/topics/renderscript/compute.html#using-rs-from-java原创 2017-04-17 10:49:14 · 1925 阅读 · 0 评论 -
Android学习-兼容Android7.0,8.0版本升级更新(代码片段记录)(Kotlin)
Android7.0需要fileprovider声明,Android8.0需要添加 申明权限&amp;lt;uses-permission android:name=&quot;android.permission.REQUEST_INSTALL_PACKAGES&quot; /&amp;gt;if (Build.VERSION.SDK_INT &amp;gt; Build.VERSION_CODES原创 2018-11-03 15:06:32 · 578 阅读 · 0 评论 -
Android学习------关于Android9.0的兼容
学习链接:https://developer.android.google.cn/about/versions/pie/android-9.0-changes-28#Android9.0适配须知1.前台服务权限声明需要请求前台服务(比如通知栏中的通知,音乐播放器通知栏)权限,(FOREGROUND_SERVICE),这是一个普通权限,所以只需要在mainfest中添加即可,使用 Servic...原创 2018-11-19 15:38:17 · 3187 阅读 · 0 评论 -
Android各大手机厂商兼容适配文档快速一览入口
oppohttps://open.oppomobile.com/wiki/doc#id=10246vivohttps://dev.vivo.com.cn/documentCenter/doc/145华为:https://developer.huawei.com/consumer/cn/devservice/doc/50115小米:https://dev.mi.com/console/...原创 2019-01-19 16:51:31 · 1329 阅读 · 0 评论 -
Android学习笔记------进程间通信AIDL学习和深入理解
想要直接看效果的可以直接去看 #5.4想要源代码的可以直接去末尾1.AIDL(Android 接口定义语言)是什么?官网说明:https://developer.android.com/guide/components/aidl简单来说就是让处于不同进程间的数据可以交互,可以通信。比如A,B2个独立的App,A的数据可以告诉B,B的数据可以告诉A。2.常见的几种进程间通信有哪些?1...原创 2019-03-20 23:19:28 · 219 阅读 · 0 评论 -
AndroidUI------沉浸状态栏(兼容4.4-5.0+)
众所周知Android支持沉浸式是在4.4开始,4.4和之后的版本又有些许区别,所以我们需要考虑Android版本的兼容性。接下来我们来尝试看看不同的效果1.Android4.4沉浸式:先看看原图,添加样式 ,可见顶部有一明显的黑色状态栏1.1 方式一 样式修改1.在主题样式文件中设置添加<item name="android:windowTranslucentStatus"...原创 2019-05-07 23:42:50 · 327 阅读 · 0 评论 -
Android 机顶盒(Box)替换修改鼠标指针样式(需要Root)
1.需求1.由于我们的产品是运行在机顶盒上使用的,并且是可以插入鼠标操作的。 由于鼠标指针太小,用户使用又是依靠投影设备当作屏幕使用,所以这个时候机顶盒显示出来的鼠标旧显得比较小,而且还有其他一些系统因素,比如背景纯黑色,鼠标指针也是默认黑色的,这样就更不容易看清屏幕上的鼠标指针在哪里了。2.解决方案1.不予解决,一开始我是拒绝的。鼠标指针是跟随系统的,也改变不了系统的资源啊。驳回诉求...原创 2019-07-10 10:56:21 · 3259 阅读 · 0 评论 -
Android学习------Handler源码分析到手写简版Handler实现
从Handler的使用,到源码分析学习Android多年了,还没有看过Handler源码,只是知道Handler是用来发送消息更新UI的,那么具体的实现是怎么样的呢?那么今天,就来偷窥一下Handler源码的世界。1.Hander的基本使用1.1 基本使用,Demo演示首先我们来一个简单的例子,看看平时我们Handler是怎么使用的,然后逐步分析里面的源码实现。创建一个新的工程,Han...原创 2019-08-04 23:16:17 · 354 阅读 · 0 评论 -
Android热修复------手写AndFix实现(基于Android7.0)
市面上很多热修复框架,相信大家也都有对比使用过,其他热修复框架这里也不列举对比了,今天就从阿里的AndFix热修复框架入手,学习下AndFix里面的热修复是如何做的。源码地址:https://github.com/alibaba/AndFix上次更新已经是三四年前的了,基本上没有维护了,不过还是有学习的价值。 接下来我们就来简单看下里面到底怎么做的,然后自己实现一个热修复。AndFix实现原...原创 2019-09-26 22:28:33 · 489 阅读 · 1 评论 -
Android 打包上传AAR文件到本地Maven仓库并且引用
1.前言建议电脑端观看,多图慎入平常项目中遇到的一些公共组件,公共模块,多个项目都在使用的情况下,我们一般有以下几种做法1.整个module导入工程,如果module中有什么bug,修改了还要其他项目再重新添加进去,很不方便2.module打包AAR,多个项目引用添加,如果有什么bug,修改了重新发给其他项目成员重新更新3.使用Gradle Add Libay的方式 类似:im...原创 2018-06-09 20:42:38 · 23944 阅读 · 24 评论 -
Android Studio 运行java程序 2
Android Studio 运行java程序 21.前言还记得以前写过一篇文章 Android初学之——Android Studio 运行java程序 居然有2w多的阅读量,15年写的,估计都是那个时候才用Eclipse转过来的吧,哈哈。有时候能直接运行一些代码验证自己的想法,希望可以不用再重新到手机上运行一遍程序,则可以写个小程序跑一遍,这样的做法还是挺方便的。所以时过境迁,如今再...原创 2018-06-06 22:57:05 · 489 阅读 · 0 评论 -
Android学习------ExoPlayer的学习和使用(音频)(一)
ExoPlayer的学习和使用(音频)(一)1.前言Google GitHub ExoPlayer地址:https://github.com/google/ExoPlayer相关教程网站:https://google.github.io/ExoPlayer/guide.html简要说明:ExoPlayer is an application level media pl...原创 2018-06-06 20:51:58 · 10686 阅读 · 12 评论 -
适配Android7.0版本更新功能
适配Android7.0版本更新功能测试手机:华为 Android 7.0 问题1 升级安装失败,程序崩溃:前面有一篇文章讲过了使用DownloadManager在应用内实现版本更新 详见 Android学习之—-利用DownLoadManager实现版本升级,之前Android 7.0也还没有普及所以一直没有更新代码,没注意到Android7.0的一些版本变化,导致了在Android 7.0 上面原创 2017-09-19 22:19:15 · 6657 阅读 · 1 评论