自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SoulQw(思忆)

工程师、贝斯手、占星师

  • 博客(25)
  • 资源 (8)
  • 收藏
  • 关注

原创 致敬Glide-借用其思想设计一个拍照选图控件

背景鉴于最近对原有项目进行了老的代码的重构,其中的调用系统拍照选图模块就是我们日常遇到一个痛点,需要在调用系统相机的部分写Intent 、在onActivityResult中获得照片以后、异步处理(方向纠正、压缩等)获得的数据、如果有业务需要还需实现上传到后段的逻辑,所以疏离下来有几点痛点:处理入口分散、触发拍照行为和接收不在一个地方、依赖重写onActivityResult方法,非常不利于后期模块化组件化拆分。图片需要异步处理以提高用户体验,所以此时还需要考虑容器的生命周期,需要添加很多判断代码,

2020-12-18 23:23:30 2176

原创 来抠个图吧~——更优雅的Android UI界面控件高亮的实现

背景在我们的开发过程中,常常遇到这样的问题,我们的APP开发中要在某个页面去加一些新功能的引导,最常用的就是将整个页面做成一个类似于Dialog背景的蒙层,然后将想提示用户的位置高亮出来,最后加一些元素在上面,那么大概效果就是这样:乍一看很简单嘛,设计师切个纯图展示不就好了嘛? 其实我们之前的功能都是这么做的: 需要展示用户引导页的时候用一个设计师给的纯图覆盖在当前页面.但是这样虽然又不是...

2020-04-10 12:49:09 4622 14

原创 基本数据结构之-树

树树是 n个节点的有限集,当n = 0时,称为空树.在任意一个非空树中,有如下特点:有且仅有一个特定当称为根的节点.当n >1 时,其余节点可分为m (m> 0)个互相不相交当有限集,每一个集合本身又是一个树,并称为根的子树.如上图:A即为根节点,B、C分别为 A的叶子节点. B、C 分别又有自己的子节点,所以B、C也称为A节点的子树.二叉树二叉树是树的一种特殊形式...

2019-11-30 16:36:49 288

原创 Android代码重构之-优雅的解决顺序调用方法之间的耦合

背景before:在我们APP启动过程,我们可能常常有这样的需求,在APP第一次进入的时候根据网络请求的结果弹一个对话框式的广告, ok~ 很简单,那么代码大致就是这样(这边都是伪代码,为了方便理解): @Override protected void onCreate(@Nullable Bundle savedInstanceState) { checkFirs...

2019-09-30 23:48:24 1726 9

原创 Android 高亮View、引导页的更简解决方案-Curtain

Curtain一个更简洁好用的高亮蒙层库:一行代码完成某个View,或者多个View的高亮展示高亮区域支持自定义大小、操作灵活顺应变化,基于Android X配置简单,导入方便Installation:dependencies { implementation 'com.github.soulqw:Curtain:0.0.1'}Usage:仅仅是高亮某个Vie...

2019-09-21 11:04:55 984

原创 SparseArray 那些事儿(带给你更细致的分析)

前言说到Android 常用的数据结构,那不得不提一下SparseArray(稀疏数组),我们在很多业务以及Android源码中能见到基本介绍 (Whate)简单来讲就是一个使用int作为Key的 Map ,官网的介绍就是:SparseArrays map integers to Objects继承关系:它继承自Object,实现了Cloneable:public class Sp...

2019-08-09 13:54:37 724

原创 在Jcenter上快速共享你的Android 项目(Java or Kotlin)

背景开发过程中,如果你写了一个工具类,想给其他项目使用的话,通常都是将它抽到lib目录供其他项目使用:然后在调用项目下引入相关的Lib:问题那如果想使用的项目和我们公用的lib不在一个目录呢?按照以前老的方式,譬如拷贝文件,打包jar的方式虽然又不是不能用,但是不仅便于维护和修改,如果每次改动,每个地方都要重新造作一遍,而且如果有资源文件就更麻烦了,那么能不能跟第三方开源库一样:一个地...

2019-06-06 13:04:34 295

原创 这也许是Android权限适配更简单的解决方案

背景关于运行时的权限不用多说,这个概念已经很久,近期工信部在强推SDK26,做了一些适配,其中有一项就是运行时权限的适配,今天将对运行时权限,做一个更优雅的解决方案,如果你还不了解运行时权限,请移步:Android运行时权限浅谈现状:(以直接调用打电话功能为例)首先我们项目中可能会有这么一个方法: /** * 拨打指定电话 */ public static...

2019-04-22 19:46:12 4583 8

原创 Kotlin快速上手篇之Android&Kotlin常用开发对比

变量定义与常用数据类型java:int i = 1;long l = 2;boolean b = true;float f = 0;double d = 0;char c = 'A';String s = "text";Intent intent = new Intent();Kotlin:var i : Int = 1var l : Long = 2var b : B...

2019-03-15 14:44:49 366

原创 聊一聊Kotlin的泛型

Kotlin的泛型简介与java一样,kotlin也支持泛型,用法和java泛型差别不大,kotlin特色是型变支持。基本用法:定义类:跟java相同,定义在类后面的尖括号:open class Basket<T>{ }定义方法:定义在fun 关键字和 方法名之间。//java public <S> void testFunction(...

2019-03-07 20:20:47 3524 1

原创 从Android 源码跟踪到的Java位运算的一些事儿

前言在我们Java程序员的日常开发中因为面向对象,其实关于位运算还是接触的比较少的,但其实看看有些框架的源码,发现还有通过位运算实现的比较巧妙的设计,今天我们就来稍微了解一下位运算。基础回顾bit 和 byte1)bit指“位”,是数据传输速度的计量单位,常简写为“b”;Byte指“字节”,是文件大小的计量单位,常简写为“B”。2)Byte和bit的换算关系是,1 Byte=8 bits...

2018-10-26 18:28:48 939

原创 Android 运行时权限浅谈

Android 运行时权限详解Android 开发常常遇到的一个问题就是在Android APP 安装的过程中,会向户请求一大堆权限,不同意不会让你安装,当然我是从来不会看的直接安装,我相信你也是,所以不知不觉中,也许有些敏感权限就这样被授予了,(比如我突然收到某个从未注册的平台的推广短信),为了 解决这个问题 Android M 推出了运行时权限,敏感权限在真正使用的时候会想用户提示,用户的...

2018-07-20 13:42:00 4539 1

原创 Android 点击Url(短信链接)打开App 的调研与实现

前言:随着APP产品的迭代,运营的过程中往往会有一些活动希望通知到用户,或者唤起沉睡用户,就我们Android而言,当然有推送,长连接一类的方法,但是,基于国内的推送环境,只能APP自己启动长连接,没有统一的系统级别的推送支持,导致沉睡用户无法送达的,除非你是微信这样的大佬才行,所以,此时通用一点方式就是通过短信发送一条活动链接,通过点击这条链接可以直接跳转到我们的APP。实现效果:...

2018-03-16 13:15:11 22496 5

原创 让偷懒更彻底——用Butterknife 来为recyclerview 打造通用适配器(上)

背景随着recyclerview 的越来越普及,其高度的易用性,让我们越来越爱不释手,当然网上也出现了很多类似的通用适配器,让我们更加方便的使用它,今天我们这里介绍一种新的recyclerview的通用适配器的实现思路——把recyclerview和ButterKnife结合起来使用(ps:因为公司开发一直使用butterknife,才有了这种想法)。首先贴上我的实现效果:代码用法使用:ModelR

2017-01-24 11:15:17 10738 4

原创 Android Activity切换动画多种实现方式与封装

关于Activity动画那些事关于activity的动画,相信大家再熟悉不过了,我们开发中经常用到,网上资料也很多,但是也有一些小细节需要我们注意,今天这篇文章我总结了几种常用的动画实现方式,通过这篇文章,你可以了解到:几种常见的activity动画实现方式activity动画中需要注意的细节这几种方式的优缺点比较,我们如何取舍对这几种方式进行简易封装,提高我们的开发效率几种常见的实现方式

2016-09-12 19:17:29 11686

原创 艺术般的波浪点击反馈效果

Material Design之Rippledrawable 使用与简单封装(向下兼容至selector)前言 Android 5.0问世以来,谷歌所推崇的Material Design得到业界的一致好评,其良好的UI规范与交互确实让界面交互友好和漂亮了不少,Rippledrawable便是其中之一,本博客今天着重讲如何将它运用到我们自己的项目中,并且封装得简单易用。 我们

2016-07-23 23:31:58 2926

原创 写在正式工作的第三个月

从来没想过时间会是过的如此之快,一晃我在不知不觉中就毕业了,一晃我已经在我曾经不敢想的城市工作三个月了,我即将迎来第一个不回家的国庆节。正如那句话所说,生活就像朱古力盒子,你永远不知道下一颗是什么味道,我们永远无法预知未来会是什么样子,活在当下,踏踏实实走好每一步,大概就是我目前最大的感悟吧。 从13年下半年开始到现在的两年,是对我来说很重要的一个阶段,它让我经历了,培训,实习,毕业,正式工作等几

2015-09-30 23:48:19 1251 3

原创 Android 实现异步刷新UI,定时器等的多种实现方案

在我们开发中,我们常常会使用多线程来实现很多需求功能,譬如,在网络中访问数据,然后在界面中展示响应数据,在APP首页实现个轮播效果的viewpager,亦或是实现一个定时器的效果,定时的刷新我们的界面。。。今天我们这里稍作整理下,把能实现上述效果的可行方案归纳起来,总结如下四种方式: 方式一: AsyncTask 谷歌提供的异步工具,刷新UI神器,也是我们最常用的方式之一,很多网络请求框架也是

2015-08-30 22:58:15 8438 2

原创 Android开发笔记——SharedPreferences 存储实体类以及任意类型

日常开发中我们常常要用到保存数据,Android中常用的存储方式有SQLite,sharedPreferences 等,当然也有各自的应用场景,前者适用于保存较多数据的情形,后者责倾向于保存用户偏好设置比如某个checkbox的选择状态,用户登录的状态等等,都是以键值对的形式进行的文件读取,可以存储String,int,booean等一些基本数据类型等等。 但是每存储一个数据都要提供一个key,如

2015-08-02 12:40:24 7188 2

原创 Android开发笔记--WIFI状态判断

最近公司开发中遇到了一个需求:公司有个业务需要——使用高德地图SDK,为了提高定位精度需要让用户WIFI处于打开状态(因为打开WIFI 扫描周围的热点SDK会去匹配他们的数据库里记录的WIFI热点的位置,从而提高定位精度),注意:这里的打开不是处于连接状态,而是处于连接状态或者连接中,或者未连接但是wifi开着,总之就是保证wifi是可用的状态,一开始我误认为是 通过WIFI 状态来判断,我们先来看

2015-07-25 00:39:45 969

原创 Android 数据抓取——在线音乐播放器的实现

前言: 相信很多同学学习android都开做过播放器一类的小玩意吧,但是苦于没有服务器提供数据,因而只能做个本地播放器,今天,这篇文章就是通过数据抓取,实现没有服务器,依然可以在线搜索和播放音乐!首先,贴上我的最终实现效果: 因为数据是从虾米搜索页抓过来的,所以我把虾米logo加上去了,请大家忽略,下面来讲基本思路,首先虾米有这样一个隐藏的API: http://www.xiami.com/s

2015-06-28 13:08:46 9639 24

原创 Android开发笔记——ScrollView中解决listview,gridview显示不全问题

在我们日常开发中,我们可能会碰到这样的情形:在某个内容很多的页面中用listview显示几条数据,或者用gridview显示几张图片,由于页面内容很多,一般都要在最外层加上SrcollView来显示全部数据, 那么问题来了: listview,gridview本身就是支持滑动的组件,而嵌套在可滑动的scrollview中会就发生冲突,最终出现的结果可能就是:listview,gridview只显示

2015-06-17 21:05:22 2120

原创 Android开发笔记—— layout_weight

在我们日常开发中,LinearLayout是我们经常用到的布局组件,其中有一个属性layout_weight属性在我们的布局屏幕适配中起了很重要作用,但是当设置这一属性以后,再设置组件宽度会出现不同的状况: 当组件宽度设置为match_parent时:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/

2015-06-17 13:17:43 608

原创 高仿QQ音乐之旋转专辑图片的实现—仿留声机效果

前言:应个人毕业设计的需求,要做一款音乐播放器,其中一个页面效果就是仿照QQ音乐的播放界面做一个可旋转的圆形专辑图片,效果如下: 通过最终设计与实现,我们的效果如下:

2015-06-03 18:40:54 6261 5

原创 高仿手机QQ音乐之——Android带进度条的开关

高仿手机QQ音乐主界面播放按钮

2015-03-31 18:49:33 2934 5

RecyclerViewAdapter with Butterknife

结合Butterknife 为RecyclerView打造通用适配器,代码更简洁

2017-01-24

android Activity切换动画多种方式

提供多种方式的activity切换动画的实现,并封装为基类,方便使用

2016-09-09

android 波浪点击效果java代码实现向下兼容

可以直接对某个或者多个view实现波浪反馈效果,向低版本的安卓系统兼容为相同颜色的selector

2016-07-23

Android异步刷新UI多种实现方案

提供Asynctask Handler+thread 以及 TimerTask等四种方式实现刷新UI,也可以实现类似定时器的效果

2015-08-30

Android ShaerdPreferences保存bean以及任意类型

提供java方法 和fastJson两种方法来通过ShaerdPreferences保存实体类以及任意类型的数据,经过测试,比较方便

2015-08-02

Android 数据抓取实现歌曲在线搜索

使用jsoup 抓取虾米网站的歌曲数据,包括专辑图片 ,歌词,歌曲路径等信息

2015-06-28

Android旋转专辑图片—仿留声机效果

高仿手机QQ音乐播放界面的模拟CD效果,能实现图片展示和自由旋转,类似于留声机效果,体验不错

2015-06-03

带进度条的ProgressToggleButton

高仿手机QQ音乐,可以控制播放并展示播放进度

2015-04-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除