自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梁超杰

不积跬步无以至千里

  • 博客(290)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android Studio接入ARouter以及简单使用

最近在学习组件化,看到业界都在使用阿里的ARouter框架想写个demo集成进来却发现其官方文档比较含糊,项目一直编译不通过,后来在遍查文章才脱坑,特此把脱坑之路娓娓道来。阿里巴巴 ARouter框架 Github这套路框架解决的是组件化开发中,组件之间(Module与Module)之间通信的问题,我之前写过一个不用三方库的组件间通信的demoAndroid模块间通信(不使用三...

2018-05-27 20:10:33 3018

原创 Webview无法加载图片并且无法点击

由于 Internet Explorer 8.0 以上,Firefox 3.5 以上,Chrome 4.0 以上都是支持Html5 中的 DOM Storage存储机制 ,导致我们通过webview加载的部分html5页面中的部分图片资源加载失败问题描述:加载http网页图片加载不出来,而且也无法相应点击事件。解决办法 webSettings.setDomStorageEnabl...

2018-05-19 23:37:26 716

原创 android监听通知栏点击事件

核心思想: 使用BroadCastReceiver1 新建一个BroadCastReceiver类,并且在清单文件中注册!! <receiver android:name=".NotificationClickReceiver"> </receiver>public class NotificationClickReceiv...

2018-05-14 23:08:27 14644 1

原创 Android中的富文本

发现有个作者写的富文本例子很多,可以参考富文本使用操作大全

2018-05-07 21:42:35 562

原创 error: style attribute '@android:attr/windowEnterAnimation' not found.

原来的styles<style name="share_dialog_style" parent="android:Animation"> <item name="@android:windowEnterAnimation">@anim/dialog_enter</item> <item name="@an

2018-05-07 12:28:49 389

原创 Http Url中的转义字符

使用Fiddler抓取接口显示如下:看到某个字段值为“%3D”,我一开始以为就是值,所以一直尝试不成功最后才发现:空格 - %20" - %22# - %23% - %25& - %26( - %28) - %29+ -

2018-04-13 22:11:29 2452

原创 Android仿微信朋友圈九宫格图片展示自定义控件,支持缩放动画~

一直对微信朋友圈九宫格图片显示控件比较好奇,找到一篇介绍相关骚操作的博客Android:NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件博客虽好但是不够完美,缺少点击图片预览页面和缩放动画,作为一个不断追求完美主义的人,我想把这个控件结合到项目中而不是单纯作为一个控件。下面是我的实现效果图:(九张图) (单张图) 1 整个demo需要用...

2018-04-07 14:14:20 11705 33

原创 AsyncTask从精通到放弃(二)

时光荏苒,距离我上次写AsyncTask的文章已经过去快一年了AsyncTask从精通到放弃(一)那个时候的我只get到了它的使用规律但是没有研究过源码,最近在强化自己对于源码的理解能力,所以对其源码进行了研究,如果对AsyncTask不熟悉的朋友可以看完我上面的博客再看这篇文章我们一般使用AsyncTask的姿势如下: new AsyncTask<String, Void,...

2018-03-30 00:23:39 484

原创 Android判断手机屏幕和分辨率

项目需求是有的动态图不在小屏手机上显示,如何判断是不是小屏呢?因为现在手机主流都是1920*1080 1280*720手机,而且dpi都是320以上,所以我的解决办法是判断手机dpi,小于240dpi的手机自动忽略~ private boolean isOldSmallPhone(Context context){ DisplayMetrics metric = co...

2018-03-28 19:39:23 3115

转载 Android进阶之Fragment与Activity之间的数据交互

看到一片关于Activity和Fragment交互的文章,mark一下Android进阶之Fragment与Activity之间的数据交互

2018-03-12 21:33:17 508

原创 LinkedHashMap是如何实现访问排序的?

源码的核心是数据结构最近在读缓存图片框架的源码,一直不知道缓存是如何判断“LRU” (Least Recently Used)最近最少使用的,看了源码才知道核心是LRUCache类,这个类的核心其实是 LinkedHashMap类关于这个类的介绍,网上有很多资料介绍这个类的特性: 1 双向链表+哈希表 2 线程不安全 3 允许空的键或者值 4 有序有一篇博客

2018-03-09 22:13:57 8109

原创 Android Studio R文件爆红但是项目可以运行

这种原因是你的R文件太大了(超过了Android Studio的上限25.6M了)解决办法如下:Help -> Edit Custom Properties -> create custom properties?(yes) ->添加 idea.max.intellisense.filesize=5000最后重启Android Studio即可!!!...

2018-03-08 20:22:25 13915 17

原创 Android 底部弹出Activity

网上百度了很多方案,很多都是过时的,下面介绍我的方案:第一步:新建3个anim文件1 bottom_in.xml(底部弹入动画)<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fr

2018-03-05 22:49:54 9143 4

原创 Android TextView 超链接显示及跳转

首先看下效果图点击“详情页”进入到我们的App的另一个页面,这是如何实现的呢?先看下代码textView = findViewById(R.id.text);SpannableString ss = new SpannableString("具体内容请点击详情页");ss.setSpan(new CustomURLSpan(""), 7, 10, Spanned.SPAN_IN

2018-03-04 22:29:35 1700

原创 Android仿微信实现通讯录字母列表索引

下面先看下我的效果图:有需要的可以点击这里下载源码点我点我!!!

2018-02-26 21:41:24 2074 4

原创 Android/Java汉字按照拼音排序

汉字排序之前: peopleList.add(new NameBean("风四娘")); peopleList.add(new NameBean("连城璧")); peopleList.add(new NameBean("萧十一郎 ")); peopleList.add(new NameBean("沈璧君"));

2018-02-26 13:18:02 2147

原创 强大的Android汉字转拼音开源库TinyPinyin

我们日常开发中遇到汉字转拼音的机会比较少,但是在做联系人相关的时候就会常常遇到,比如微信联系列表,手机联系人列表,张三的首字母排序是Z,王五的首字母排序是W。今天给大家介绍一个汉字转拼音的库TinyPinyin,具体的github地址在这里TinyPinyin项目导入就一步: compile ‘com.github.promeg:tinypinyin:2.0.3’ // 2018.2.25日最新

2018-02-25 22:12:44 9155 10

原创 WindowManager前世今生

写上篇博客仿微信悬浮通知栏/横幅通知的时候对WindowManager充满了好奇,所以今天专门看了下源码,加深了我对于window的理解首先看下我整理的图片我们经常用到的addView其实就是ViewManager接口的一个方法,所以参数都是一致的public void addView(View view, ViewGroup.LayoutParams params);大家...

2018-02-24 13:38:45 263

原创 仿微信悬浮通知栏/横幅通知

微信或者知乎推送消息的时候总会出现下面的效果: 也许很多人会说这是一个NotifiCation,看起来确实是的,按照思路走下去,所有的信息都将我们指向了setFullScreenIntent这个方法,但是不幸的是方法的源码大家可能没有看到 大家可能运行的结果是直接打开了Intent而不是弹出通知框,对的,源码也是这么说的,系统UI只是可能会展示Head up通知但是并不是一定会显示的!下面介

2018-02-23 21:59:25 14118 6

原创 LinearLayout weight使用技巧

刚开始学使用LinearLayout的时候觉得weight很容易,按照比例就行了,但是项目中遇到一个问题让我对weight产生了新的认识,先看下我的问题:红色的图片和文字”抢购”之间是有文字的,但是这个文字长度是不是固定的,但是抢购是在文字右边的….这个时候使用weight就很简单了 一个水平向右的线性布局 最左边的图片 中间的文字 weight=1 width=wrap_con

2018-02-11 17:28:09 490

原创 Android Studio res/layout实现分包管理

随着业务增大,项目布局文件越来越多,layout目录下的文件已经超过了100个按内容分类虽然好但是有个天然劣性: 不好找所以根据业务分包布局文件就尤为必要res/layout分包管理sourceSets { main { res.srcDirs = [ 'sr

2018-02-06 11:00:23 1785

原创 Java String,long,Date时间格式相互转换

/** * Date转String(格式自定义) * @param pattern yyyy-MM-dd HH:mm:ss yyyy-MM-dd等样式 * @return */ public static String date2String(Date date,String pattern) { SimpleDateFormat f

2018-02-01 08:55:09 2682

原创 Android事件分发机制(小白学习篇)

最近在深入学习事件分发机制,一直被虐终于学有所成,特意把学后的总结记录下来,方便日后复习,也希望能帮助更多在事件分发上迷惑的人们。首先你需要知道事件分发的对象有:Activity,Window,ViewGroup和View 其次你需要知道什么是事件流:ACTION_DOWN开始,数量不定的ACTION_MOVE和ACTION_UP组成了一个完整的事件流如果以上两点你不知道,你可以先去学习下再来看

2018-01-30 22:11:24 399

原创 Android ellipsize属性(多余文字用省略号显示)

TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式: 例如,字符串”abcedfghijklmn” 的各种现实效果:android:ellipsize=”start”—–省略号显示在开头 “…lmn” android:ellipsize=”end”——省略号显示在结尾 “abcdec…” android:ellipsize=”middl

2018-01-30 14:18:06 13728

原创 集合长度莫名其妙为0?

自己销毁自己,所以长度为0先看下面这段代码有没有问题//对集合重新赋值private void reSetList(List<String> list) { mList.clear(); mList.addAll(list); }乍一看没有什么问题,把原来的集合清空装新的集合进来,问题来了如果list和mList是同一个对象怎么办呢?mList.clear

2018-01-24 19:35:56 627 1

原创 Java精度丢失之String转Double转int

项目遇到一种需求 服务器返回我“0.850”,我需要显示八五折看起来很简单,于是代码出来了: Double d = Double.parseDouble("0.850"); int result = (int) (d*100);随便找了两个数试了试都没问题就以为大功告成了,谁知道测试的同事告诉我0.570显示的是56而不是57,我抱着怀疑的态度验证了一下,的确是我错了!我心里一惊,是不是还有

2018-01-22 23:30:58 2033

原创 Android实现播放音乐列表

首先我们看下QQ音乐,酷我音乐的列表图网易云音乐也是这种列表,下面展示下网易云音乐的音乐列表gif图总结下播放列表播放音乐的逻辑: 1 点击某一首歌,就开始播放 2 当其他歌曲在播放的时候,点击新的一首歌,原先播放的暂停,新的歌曲播放 3 当前有一首歌在播放,即使列表滑出了屏幕当再次回到屏幕的时候还是显示这首歌在播放下面开始撸代码:package com.smartrefesh.l

2018-01-21 13:35:43 13278 6

原创 json字符串与对象之间转换

Gson解析

2018-01-18 18:33:42 1061 1

原创 Android TextView实现垂直滚动的跑马灯效果

我们知道TextView水平方向可以设置跑马灯效果,可是垂直方向上需要跑马灯效果该如何设置呢?先看下效果图:附上源码:VerticalScrollTextViewpackage com.android.uilib.view;import android.content.Context;import android.graphics.Color;import andr

2018-01-18 17:11:55 3871

原创 RecyclerView局部刷新

刷新局部靠的是下面两个方法: notifyItemChanged(position,”hello”)不是onBindViewHolder(BaseHolder holder, int position)而是@Override public void onBindViewHolder(BaseHolder holder, int position, List paylo

2018-01-16 23:12:18 1336

原创 Android实现朋友圈全文/收起的功能

看下效果图:首先我们先理解收起和全文的逻辑: 假如产品设定:文字超过三行就要折叠 1 如果文字不超过三行,那么就不显示“全文”和“收起” 2 如果超过了三行显示“全文”,点击全文就可以看到所有文字,同时最下面显示“收起”难点在如何记录每个Item的收起和全文的状态?我们知道RecyerView和ListView都是复用ViewHolder,所以免不了有

2018-01-14 21:44:39 4072

原创 applicationId和packageName

在开始讲解两者的区别之前,我想起了曾经项目的一个需求: :你能给我们客服人员手机上同时装线上环境的APP和测试环境的APP吗?那个时候刚学Android,完全不知道如何做到这种骚操作,只能无奈的告诉我们客服人员用一个的时候卸载另外一个。。。。直到了解了applicationId和packageName之间的区别才算是真正懂了这种骚操作的原理。我们手机上有很多App,Android系统为每个Ap

2018-01-01 21:38:30 491

原创 implementation和compile

先说结论: implementation不可以依赖传递,但是compile可以依赖传递我们项目中会遇到module引用的情况,比如现在项目中有app,module1,module2三个module,要在module1中依赖module2的代码,如下所示: dependencies { ... compile project(':module2') }假设现在的需求是这

2018-01-01 18:15:32 17201 4

原创 Error:Unable to resolve dependency for ':module1@debug/compileClasspath': Could not resolve project

如果你是需要导入依赖项目,请保证被依赖的项目是Library而不是Application正确的下面是错误的:

2018-01-01 14:48:00 1831 2

原创 打折优惠券View

看到这个View很有意思:于是决定自己下手实现一个:效果如下图具体的实现不是很复杂,详细请看代码:package com.discountframeview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Pai

2017-12-28 22:21:16 294

原创 动图展示app:layout_scrollFlags的5种滑动属性

在学习这5种滑动属性之前你需要知道的基础知识: CoordinatorLayout,AppBarLayout在刚开始接触CoordinatorLayout的时候我是一脸蒙逼的,心里在想”啥玩意?怎么要记这么多东西呀?”可是真的当我明白每个的用法的时候你会觉得这是多么奇妙啊就跟你刚玩LOL的时候还在纳闷怎么要按那么多键?Q,W,E,R,P,B,D,F,手都忙不过来,但是当你真的熟练的时候你会发现

2017-12-27 23:13:08 23877 10

原创 Timer+TimeTask+注解+反射打造定时轮循器

假如现在有一个需求 页面有一个TextView,为了保证文本数据内容和服务器数据相同,需要实时刷新,展示最新的数据内容除了服务端推送过来消息这种方法之外,我们也可以采用定时轮询请求服务器的方法来实现。先看下整体的流程图:一个TextView存在于Activity之中,而Activity存在于UI线程中,我们使用定时器Timer去周期性执行任务,Timer内部是新开了一个线程去周期性执行Time

2017-12-24 18:44:37 526

原创 在onCreate()方法中获取view的width和height

public class LOLActivity extends AppCompatActivity { @BindView(R.id.f) private FlexboxLayout flexboxLayout; private Context context; @Override public void onCreate(Bundle savedInstan

2017-12-18 09:28:00 248

原创 人为什么会走向平庸?

我相信每个刚大学毕业的学生都对未来充满了好奇心,同时对自己充满了足够的信心,都认为自己通过热情地投入工作就可以做出一番不说改变世界但是也能够改变很多人的成就时,现实瞬间拍醒了睡梦中的这些人,让他们觉得自己的只是芸芸众生中再也平凡不过的一个人 希望越大,失望越大,失望至极,人格崩塌当我们认识到自己是个平凡的个体时,我们每个人对同一件事的不同反馈就让我们在这里分化(就跟高中生物学的细胞分化一样),

2017-12-17 17:13:46 1239 1

原创 git pull和git pull -- rebase

在开始对比这两条命令之前,请大家思考三个问题: 1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗? 结果是不可以,如果你没有将修改提交到暂存区,那么无论是pull还是pull –rebase都是不可以拉下来代码的接下来我们再多思考下: 2 如果工作区修改提交到暂存区但是没有commit可以调用git pull和git pul

2017-12-14 23:56:06 8038 3

channelApk.zip

下载这个channelApk 文件夹,然后将release apk拷贝进src_apk文件下并命名,随后执行buildChannels.sh脚本,等待一会就可以看到output中就是你的渠道包文件啦。

2019-08-13

Android实现快速发送电子邮件

最近有朋友有需求是通过apk发送邮件,我心想这怎么可以实现?然后就研究了一番,最后得出结论是可行的! 确实可以自己的手机上定义主题和内容或者附件,然后发送给对应的邮箱!详细步骤倾听我一一道来

2018-10-31

android扫码登录

Android 快速实现扫描识别二维码(即扫码登录功能) 扫码登录现在很流行,淘宝,京东,熊猫直播各大网站都有扫码登录功能,其实呢对于客户端来说扫码登录很简单,因为难点都集中在了前端身上,我简单讲下扫码登录的流程:

2018-10-27

通讯录字母列表索引

相信大家对这个列表字母索引已经不陌生了,在很多app中也随处可见,像没团的城市地址选择,微信联系人列表,手机通讯录…等等。既然是个这么nb这么实用的功能我们怎么能不Get到来呢,下面就让我们一起造一个出来吧

2018-02-26

CheckUtils

判断用户输入的字符串是不是身份证号,邮编号,手机号,银行卡号和日期

2016-12-30

空空如也

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

TA关注的人

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