安卓进阶
文章平均质量分 51
Mr_Leixiansheng
冰冻三尺非一日之寒。
展开
-
AIDL进程间通信
AIDL:进程间的通讯(一个APP与另一个APP交互)本例子以一个App作为支付应用,另一个App调用支付APP内的支付方法,以此实现进程间的通信。效果图如下:第一种是启动支付APP后再调用,第二种时未启动APP直接调用。虽然第二种调用没有和用户交互,支付APP内部的方法其实是已经实现了,可以冲Log看出。 第一种方式打印log如下:打开支付调用APP打印出日志,表示...原创 2020-05-21 00:00:08 · 323 阅读 · 0 评论 -
ViewPager动态添加或删除Fragment刷新空白问题处理,及Fragment数据传递简介
很久没更博客了,因为自己前段时间一直在独立开发项目、、、但这不能成为懒惰的理由,自省3秒··· 好了废话不多说,开始撸码(以后都会采取先Java展示,后kotlin展示形式,小伙伴们可以各取所需)之前一直都是很基础的固定Fragment个数与ViewPager搭配使用,在项目中要求动态添加Fragment展示界面,但是却遇到了刷新空白,或者刷新不完全的问题出现,借此自写个demo以供参考...原创 2018-11-23 15:05:18 · 3037 阅读 · 1 评论 -
推送——个推
内容:介绍个推接入及使用步骤如下:1、项目gradle中添加maven库地址 //Maven URL地址 maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/" }2、app.gradle配置依赖dependencies...原创 2020-05-20 23:58:52 · 860 阅读 · 0 评论 -
MobShare(三方登录、分享)(还包括:三方支付、IM、录屏等)
介绍一款很强大的三方框架Mob,这里涉及到了它的三方登录,一键分享功能,更多功能查看其官网Mob的集成方式有两种:方法一是通过导入jar包及对应资源文件。方法二是快速集成。强烈推荐方法一,因为后期肯定要对分享界面九宫格进行修改,方法二不支持!先上图:这里是一键分享功能这里是三方登录/授权方法一:jar包导入方式1、进入官网下载shareSDK,解压。...原创 2020-05-20 23:57:53 · 1857 阅读 · 0 评论 -
Bugly功能详解:异常上报、APP自更新、热修复
异常收集上报集成SDKdependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0}在AndroidManifest.xml中添加权限:<uses-permission an...原创 2020-05-20 23:59:06 · 1227 阅读 · 0 评论 -
调用系统录屏、截屏功能
安卓5.0及以上提供了支持截屏和录屏的API布局如下:<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" ...原创 2018-12-10 17:27:48 · 2110 阅读 · 1 评论 -
搜索记录、搜索历史
内容:像淘宝搜索栏一样,将搜索过得内容保存并显示在搜索历史代码如下:布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.and...原创 2020-05-20 23:55:47 · 254 阅读 · 1 评论 -
多线程断点下载原理解析
原理:1、将一个任务等分成几个小部分2、开多个线程每个负责一个,记录每个线程其开始位置和结束位置3、分别写入同一个文件,也是按起开始位置和结束位置写入。同时在下载时创建临时文件记录这次下载到哪儿4、下载前看是否有上次记录,有则接着从后面下载public class MainActivity extends AppCompatActivity { @BindView(R...原创 2020-05-20 23:57:16 · 389 阅读 · 0 评论 -
RecyclerView包含多种布局实现
内容:同一个RecyclerView包含多种布局。本例设置了三个不同的布局样式,都在同一个RecyclerView中展示出来。尾末简要介绍了下GridLayoutManager的setSpanSizeLookup()方法效果如下:步骤:1、定义三种不同布局,用于填充到RecyclerView中2、加入RecyclerView控件,设置好adapter和数据3、新建类继承...原创 2018-12-18 11:07:10 · 3754 阅读 · 1 评论 -
安卓崩溃异常处理及App重启
内容:优雅地处理崩溃问题,崩溃时给予用户提醒,然后重新启动app,增强用户体验感(当然,不崩溃才是最好的体验,汗)。未处理崩溃时的效果图:处理后崩溃时的效果图:就不写步骤了,直接说下逻辑思想。其实就是拦截系统的崩溃处理,自己进行处理。重点在实现UncaughtExceptionHandler和在其uncaughtException(Thread thread, Throwabl...原创 2020-05-20 23:58:28 · 1485 阅读 · 1 评论 -
语言切换--国际化
最常见的就是中英文切换补充:图片也可以做国际化->比如各国国旗(通过drawable-xxx)效果如下:步骤如下:1、res右键,按照下面操作中所需语言即可2、再将之前strings.xml复制到新建的value-en 和 value-zhstrings.xm(zh)<resources> <string nam...原创 2020-05-20 23:52:54 · 334 阅读 · 0 评论 -
Bitmap图片压缩、图片副本及特效处理、画板功能(保存相册刷新)、刮刮奖
图片压缩:原理:1、获取图片宽高 和 手机屏幕宽高2、获取图片宽与手机宽 ,图片高与手机高比值中较大的作为缩放比例,对图片进行压缩代码如下:public class BitmapUtil { public static Bitmap ratio(Resources res, int id, int pixelW, int pixelH) { Bitm...原创 2020-05-21 00:00:58 · 314 阅读 · 0 评论 -
App一键换肤功能
实现应用皮肤随意切换,这里只做基础展示,一个是常规肤色,一个是夜晚模式肤色效果如下:步骤如下:1、引入换肤三方框架2、在Application中对换肤SkinCompatManager进行初始化3、在main下新建自己对应肤色res文件夹(后缀可自定义,此列举res-night),和res-night下的子项资源,注意color和drawable下的命名尾部都必须跟上 ‘ ...原创 2020-05-20 23:52:25 · 1288 阅读 · 1 评论 -
图片压缩Luban
内容:对图片进行压缩,可指定忽略压缩图片大小和压缩后图片保存位置。在此对多图、图组进行二次封装,使用更方便Luban原理:使用了Bitmap基础的压缩策略,可见:Bitmap图片压缩、图片副本及特效处理、画板功能(保存相册刷新)、刮刮奖Luban关键代码:计算压缩比例、设置旋转源码:File compress() throws IOException { BitmapFa...原创 2020-05-20 23:51:36 · 938 阅读 · 0 评论 -
Recyclerview进阶——元素拖拽及侧滑删除
之前一直觉得列表的拖拽换位和侧滑删除是很难实现的,不过之后参考了下几篇博客后发,发现还是很简单的,因为suppor早就封装好了,最主要的是继承ItemTouchHelper.Callback,并对其方法效果图如下:步骤如下:1、新建类并继承ItemTouchHelper.Callback,在其对应方法设置相应操作包括,不同布局的拖拽和侧滑删除,选择效果2、Adapter中实现自...原创 2020-05-20 23:51:18 · 1410 阅读 · 0 评论 -
NestedScrollView复杂布局,可同时包含横竖RecyclerView(淘宝)
内容:NestedScrollView布局是继承了ScrollView,同时又解决了ScrollView嵌套listView/RecyclerView只显示一条的问题。使用NestedScrollView可以进行复杂的布局,上图布局就是NestedScrollView嵌套了一个纵向滑动的RecyclerView、一个TextView和一个横向滑动的RecyclerView。布局如下:aitivit...原创 2020-05-20 23:56:18 · 694 阅读 · 0 评论 -
WebView使用详解、H5网页视频全屏播放 、网页跳转空白
转载请注明出处:https://blog.csdn.net/mr_leixiansheng/article/details/81000035内容:介绍webview的使用方法,介绍WebViewClient、WebChromeClient,H5网页视频全屏播放,网页跳转空白问题最近做项目老爱和H5打交道,遇到了很多问题也踩了许多坑,今天在这儿总结下,方便后人乘凉。关于安卓和H5交互...原创 2018-07-11 15:22:42 · 6203 阅读 · 0 评论 -
APP Widget 窗口小工具
转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/53585278效果图:步骤:1、res下新建xml文件夹和appwodget文件2、在xml文件夹下新建APP Widget信息的布局文件,设置APP Widget的大小和要显示的APP Widget的布局文件(要显示的布局文件才是APP Widget的界...原创 2016-12-12 17:24:42 · 815 阅读 · 0 评论 -
okhttp3及多种网络数据解析
转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/77507547内容:主要包含okttp3 的使用以及Pull数据解析、Json数据解析、GSON数据解析步骤简介:一、okttp31)引入第三方依赖 :compile 'com.squareup.okhttp3:okhttp:3.4.1'2)在线程中实例...原创 2017-08-23 16:40:44 · 1531 阅读 · 0 评论 -
更好用的service: IntentService
IntentService继承自Service类,至于为什么要用IntentService,因为它真的很好用。Android的Service分两种,Started和Bound,分别是通过startService()和bindService()创建的,两者用途也有所区别,这个在这里就不作详解。IntentService是针对Started Service设计的,由于它默认实现的onBin转载 2017-07-26 15:08:15 · 269 阅读 · 0 评论 -
ViewPager(二)
步骤:(与ListView相似)1、Listlist = new ArrayList2、设置适配器PagerAdapter(或者自己定义适配器)3、ViewPager添加适配代码如下:1、4个布局页面(因为都相同只贴一个)原创 2017-03-18 11:26:15 · 474 阅读 · 0 评论 -
GridView(可替代TableLayout)
用法和Listview 相似步骤:1、配置集合资源2、设置适配器3、添加适配器4、设置监听1、manifest设置设置主题原创 2017-03-20 16:02:50 · 885 阅读 · 0 评论 -
(重复执行、延时)定时器实现的多种方式
作用:1、定时执行某种功能2、重复执行、定时重复执行、定次数执行某种功能类别:1、Thread(new Runnable)2、Thread()3、Timer4、Handler·····代码如下:1、布局原创 2017-03-29 14:38:48 · 1956 阅读 · 1 评论 -
ViewPager实现Tab/模仿微信界面
步骤:1、添加数据源 List viewList2、设置适配器 继承PagerAdapter3、添加添加适配器代码如下:1、布局(4个View相似,只贴出一个)原创 2017-03-30 15:54:09 · 671 阅读 · 0 评论 -
ViewPager+FragmentPagerAdapter实现Tab/模仿微信界面(推荐使用)
步骤:1、新建4个继承Fragment的类和4个布局,分别将布局添加到新建的类中2、初始化时将4个Fragment存入到List集合(作为适配器资源)3、设置适配器FragmentPagerAdapter4、添加适配器5、设置按键监听、滑动监听代码如下:1、设置好4个Fragment碎片(4个相似,只贴出一个碎片步骤)原创 2017-03-30 16:33:39 · 1662 阅读 · 1 评论 -
UI统一--Material Design
步骤:1、Mainfest的theme中屏蔽ActionBar android:theme="@style/AppTheme">进入AppTheme,修改为如下 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent 2原创 2017-09-01 15:44:50 · 437 阅读 · 1 评论 -
android 6.0及以上 运行时权限申请(动态权限申请)
转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/77184977内容:进入程序时,让用户手动选择想要开启的权限步骤(打电话为例):1、权限判断ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHON...原创 2017-08-15 10:58:34 · 1336 阅读 · 0 评论 -
RecyclerView嵌套RecyclerView布局实现
内容:一个垂直的RecyclerView嵌套一个横向的RecyclerView代码如下:Main布局这里只包含了一个RecyclerView布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro...原创 2020-05-20 23:56:04 · 2410 阅读 · 1 评论 -
原生与H5交互介绍
转载请注明出处:https://blog.csdn.net/mr_leixiansheng/article/details/80997246 步骤如下:1、允许webView加载JS2、编写js接口类3、webView添加js接口代码如下:布局:<?xml version="1.0" encoding="utf-8"?><Linear...原创 2018-07-11 11:46:06 · 1816 阅读 · 1 评论 -
安卓弹窗广告(自适应屏幕)
转载请注明出处:https://blog.csdn.net/mr_leixiansheng/article/details/81062588内容:弹窗广告特点:根据屏幕尺寸和原图片比例自适应代码如下:package com.example.leixiansheng.addialog;import android.annotation.SuppressLint;impor...原创 2018-07-16 11:46:19 · 3588 阅读 · 8 评论 -
安卓动态布局
转载请注明出处:https://blog.csdn.net/mr_leixiansheng/article/details/81061102自从学习安卓开发时一直都是用的是xml可视化布局,觉得十分方便直观,偶尔也会用到动态布局但却不是很熟悉究竟如何用。最近做项目需要从网络获取图片并且自己处理放大,就有点懵逼,想到动态布局实现却不知该怎么用(欲哭无泪,说白了还是技术太渣),所以写下这篇日志...原创 2018-07-16 11:28:33 · 1535 阅读 · 1 评论 -
Fragment懒加载
普通加载,跳转第二页时已经被预加载好了,所以没有刷新动画懒加载,跳转第二页时才启动加载,所以有刷新动画内容:Fragment懒加载介绍与普通Fragment区别普通Fragment:至少会预加载1个Fragment懒加载普通Fragment:只会加载显示给用户的普通Fragment好处:节约流量,提高性能,不进行不必要的加载原理:只在第一次显示给原创 2018-04-12 16:33:08 · 1084 阅读 · 0 评论 -
图片轮播banner广告滚动实现
内容:图片轮播步骤:1、初始化数据,得到图片地址和标题(标题也可以不要)2、设置banner属性3、布局添加banner控件4、代码实现代码如下:布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...原创 2018-03-20 10:14:40 · 1156 阅读 · 0 评论 -
handler更新UI、消息处理
转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/67636817作用:1、更新UI(子线程不能更新UI,通过发送消息到hanlder,在主线程更新UI)2、消息处理(对发回来的消息进行相应处理)3、弱引用,消除handler内存泄漏问题 (记得销毁是移除所有hanlder内容)代码如下:1、界面布局...原创 2017-03-28 14:53:58 · 1190 阅读 · 1 评论 -
更快捷操作数据库 LitePal
转载请注明出处:http://blog.csdn.net/mr_leixiansheng/article/details/77163225作用:LitePal使数据库操作更加快捷方便步骤:1、引入LitePal依赖 ,在Gradle(app)-->dependencies 中 引入依赖:implementation 'org.litepal.an...原创 2017-08-14 16:44:58 · 541 阅读 · 0 评论 -
安卓Launcher 简介
文章概述:1.什么是Launcher2.新建一个Launcher工程3.Apps去哪了4.显示桌面背景最近换了新工作(๑´ㅁ`),又是要去接触新的知识了。闲话不多说,让我们一起来认识一下今天的主角——launcher什么是Launcher对于初级开发者来说launcher可能还有些陌生,它俗称“HomeScreen”也就是我们开机后看到的第一个App。lau原创 2017-10-26 14:31:19 · 6272 阅读 · 5 评论 -
抽象类和选择性实现接口
1.抽象类和接口的区别 抽象类里面可以有非抽象的方法(可以没有抽象方法),接口里只能有抽象方法。 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号。 抽象类(abstract class): a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类。 b.抽象类的主要特征在于它包含抽象成员(abstract mem原创 2017-07-06 11:29:39 · 1584 阅读 · 1 评论