- 博客(123)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 AS插件开发:根据特定格式的文本自动生成Java Bean文件或字段
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布为什么要造轮子在项目中,产品提出了新需求,开发们的开发流程一般是这样:前后端根据需求讨论接口契约协议 ——> 后端发布契约 ——> 前后端各自按照契约编码 ——> 后端发布正式服务 ——> 前端调试接口在讨论契约的过程中会产生很多新的字段、甚至是新的实体,前端要根据这些新字段、实体,原封不...
2018-02-09 11:25:31
3385
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android后台模拟点击探索(附源码)
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击。经过一番探索,一共整理出两种不同的方案:AccessibilityService 和 adb shell命令,读者可自行选择合适的场景。AccessibilityService无障碍模式是我首
2018-01-24 11:04:37
33823
13
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 可自定义图片指示器并支持自定义Tab宽度的TabLayout
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布Tab栏是APP中最常用的组件,如果我们没有太多个性化需求,直接用TabLayout就可以轻松实现。但是如果我们的产品大大说不想用一条线作指示器了,想用个图片。或者像我们产品一样,想在主页展示4个半Tab(一共5个)时,原生TabLayout就不能满足了。而前面我发过一篇,自定义三角下标的tablayout,来实现类似于今日头条tab
2017-11-01 14:42:15
6164
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android Studio插件开发入门篇
前言本篇是AS插件开发的入门篇,旨在了解整个开发流程,代码比较粗糙AS插件绝对是我们开发道路上的一把利器,这里首先推荐几款我常用的插件。Json转Java类快速生成findViewById代码CodeGlance:开发前准备工欲善其事,必先利其器。首先我们要先准备IDE,这里使用 Intellij,我下载的Community版。安装完毕后,新建一个插件开发工...
2017-09-26 11:51:49
1991
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 android studio打包以及gradle配置构建
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布通过浏览这篇文章,可以学习以下内容:生成签名文件手动打包通过配置自动打包隐藏签名文件敏感信息通过设置风味实现不同风味包的资源替换多渠道打包生成签名文件,手动打包首先生成签名文件,点击 Build -> Generate Signed APK:如果还没有签名文件,点击构造一个:图中圈住的三个地方是重要信息,其余随意填。
2017-08-16 17:41:29
12298
13
原创 为什么我突然消失,因为我搬新家啦~
一直想自己搭个博客玩玩(就是眼红别人装逼),终于在上个周末行动起来了。用hexo+github搭了个雏形,主题用的是Casper,现在刚装修好,功能还需要一点一点完善。虽然折腾了点,但是还真是乐在其中,欢迎大家去新家看看。新家地址...
2019-01-30 00:05:35
372
原创 Fragment经典问题——内存销毁导致fragment重叠
今天QA提了一个bug,说我们的程序首页怎么突然像一堆翔一样……我刚要发作,看了看她的屏幕,真TM像一堆翔,所有页面都重叠在了一起!WTF!讲真,做Android这么久还是第一次遇到fragment重叠的问题,之前只看过一些资料,这次终于赶上活的了!来分析下原因。我们首页是一个FragmentActivity,里面有四个Fragment,通过show和hide维护各个页面。当内存不足时,我...
2018-05-28 22:23:43
2603
原创 链接url自动拼接appinstall参数导致其在ios QQ分享时乱码
今天测试提了一个很诡异的bug,我们的分享链接在android平台都可以正常打开,但是在ios手机上,打开就是乱码。后来通过查看链接的url才发现猫腻。我们在ios上的url自动添加了一个appinstall=0,删除这玩意,链接就可以正常打开了!赶紧上网查了查,原来是我们的url中包含#引起的。QQ会识别#自动添加appinstall参数,具体是干嘛的还不清楚。解决方法也很简...
2018-03-27 16:57:27
2462
原创 TextView图文混排——让图片居中跟在文字之后
项目中UI给提了个需求,这里用草图示意:上图圆形是一个logo图片,UI想让logo永远紧跟标题居中显示,不然标题在多行时,logo单独居中特别丑。看似简单的需求,着实难着了我,因为只要是使用TextView和ImageView,他们就是两个对象,没法相亲相爱在一起啊……直到某天编辑文档时突然想到,可以用TextView的图文排版功能啊!单独对字体进行处理,在字体后追加图就行了。这...
2018-01-19 16:09:41
1728
原创 如何使用Xpose绕过APP自定义证书验证去抓Https包
我们团队在开发过程中,测试接口时,常使用fiddler抓包查看请求报文和响应报文快速定位问题所在,这可比在代码中打断点看数据高效一万倍……然而fiddler只能抓http包,如果是https,有可能因为证书问题抓不到包。而这种场景一般都出现在,需要黑别家app,查看一些小秘密。没错,这次我们由于业务需要,得分析某竞品,自然不能倒在这抓包的第一步,所以下面记录下使用Xpose绕过自定义证
2018-01-18 11:59:11
10983
1
原创 记ViewPager在使用中踩过的坑(刷新bug,空白页bug)
ViewPager是现在比较常用的图片轮播容器,本人在项目中做循环轮播时,踩了不少坑,特开一贴记录。ViewPagerAdapter刷新问题这是个老生常谈的问题了,网上的解决方案也一堆,这里主要记录一下问题产生的原因。每次调用notifyDataSetChanged()时,都会触发getItemPosition(Object object)。该方法会遍历viewpager的所有it
2018-01-11 15:50:39
3997
原创 Git Bash中Git log中文乱码——终极解决方案
RT在网上搜寻良久,大部分是:git config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding gbkexport LESSCHARSET=utf-8但是问题依然存在。再看上述命令,提交的编码是utf-8,日志输出确实gbk,不解,于是换成如下:git co
2018-01-05 09:56:53
18104
9
翻译 Kotlin官方文档翻译—《Functions and Lambdas-Lambdas》
高阶函数和Lambda表达式高阶函数高阶函数是一种“使用函数当参数或者返回一个函数”的函数。一个好的例子是lock(),它的参数是一个Lock对象和一个函数,在函数内得到锁,执行函数最后释放锁:fun <T> lock(lock: Lock, body: () -> T): T { lock.lock() try { retur...
2018-01-05 09:50:54
267
翻译 Kotlin官方文档翻译—《Functions and Lambdas-Functions》
函数函数声明在Kotlin中函数使用fun关键字声明:fun double(x: Int): Int { return 2*x}函数的使用传统的函数调用:val result = double(2)用 · 符号调用成员函数:Sample().foo() // create instance of class Sample and cal
2017-11-08 20:33:33
718
翻译 Kotlin官方文档翻译—概述
pdf链接点我网页链接点我使用Kotlin进行Android开发Kotlin非常适用于开发Android应用,因为在Android平台上,kotlin拥有现代语言的众多优点并且没有任何新的限制:兼容性:Kotlin可以完美兼容JDK6,确保Kotlin应用可以正常运行在老的Android机型上。Android Studio提供了完整的Kotlin工具,这些工具也可以完美兼容Android构建系统。
2017-11-07 11:25:10
1185
原创 Kotlin初探
Kotlin是JetBrains爸爸开发的基于JVM的新的编程语言。其优点自不必多说,这里只提一点,Google IO 2017 宣布Kotlin会成为Android官方开发语言!因此,其发展前景被普遍看好。这里主要记录博主在Kotlin实践道路上的一些里程。安装Kotlin插件首先我们需要一个Kotlin环境,在AS上直接安装插件即可。File --> Setting --> Plugins --
2017-11-06 10:08:07
471
转载 Android新特性介绍,ConstraintLayout完全解析
本文转自郭霖CSDN博客:http://blog.csdn.net/guolin_blog/article/details/53122387本篇文章的主题是ConstraintLayout。其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。我们都知道,在传统的Android开发当中,界面基本都是靠编
2017-11-03 13:00:49
359
原创 史上最简单教程:向第三方jar包注入自己的代码
我们经常使用第三方库,但当我们遇到一些个性化需求,第三方库没有预留接口的时候,怎么办?比如我们项目中用到友盟的社会化分享组件,但是友盟的分享对话框实在是丑!而他们又没有留下足够的接口支持我的个性化需求,比如我想给对话框加个圆角背景,库中并无该接口,怎么办?下面以“给友盟分享对话框加圆角背景”为例,介绍如何简单快速的将自己的代码注入第三方jar包中。代码定位首先我们要看第三方jar包的源码,定位到具体
2017-11-02 16:01:33
5559
原创 github使用SSH Clone工程避免多次输入用户密码
RT,用HTTPS方式Clone工程以后,每次pull都要输入用户名和密码,而使用SSH就可以免去烦恼。新建SSH目录 ssh-keygen -t rsa -C “your email”一路回车,直到出现这句话:“Enter file in which to save the key(/c/Users/wk/.ssh/id_rsa)”id_rsa是默认公钥。查看当前存在的SSH ls -a
2017-11-01 13:33:43
870
原创 规范编程利器——Alibaba编码规约插件的使用
10月15日,阿里首发了Java开发规约插件,给广大java用户奉上一大福利。告别坏习惯,从现在开始更优雅的编程,一个好的编码习惯,绝对可以让你摇身一变,屌丝逆袭。下面只说Android Studio中插件的使用:File –> Setting –> Plugins –> Browse repositories –> 搜索“alibaba”–> 安装“Alibba Java Coding Guide
2017-10-19 13:54:07
2628
原创 FragmentPagerAdapter.notifyDataSetChanged失效详解
背景项目中用到Viewpager+FragmentPagerAdapter管理若干Fragment,我的fragments是根据服务返回的json动态生成的,当我的fragments发生变化时,本想通过fragments.clear();//清除旧的fragmentfragments.add(……);//添加新的FragmentPagerAdapter.notifyDataSetChanged来
2017-09-05 14:06:25
1889
1
原创 addView导致子布局“match_parent”属性失效详解
问题项目中我们经常会动态生成并加载View,而在最后addView的时候,也会经常遇到诡异的现象:明明子布局我们设置的是android:layout_width="match_parent",而最后真机的效果却是"wrap_content"。为什么会这样?我们看下addView的源码。 public void addView(View child) { addView(child,
2017-09-05 11:28:57
4911
1
原创 Android 点9图的绘制
项目中遇到需要绘制自由拉伸的Bitmap,踩了一些坑,这里记录一下。绘制点9图踩的坑最开始使用的是canvas.drawBitmap方法,让UI切了点9图,然后使用:Bitmap.createScaledBitmap()对Bitmap进行拉伸,然后发现点9图失效了,图片失真!思考了一下,此接口是直接对图片进行缩放,没有照顾点9图的特性,既然Android有点9图,那一定有对应的绘制接口,然后开始寻找
2017-08-31 16:27:52
2667
1
原创 Weex环境配置以及踩坑记录
公司这半年开始在Weex上发力,作为新人自然要赶紧学习一下。这周照着官网教程配置环境,发现官网的教程过于顺畅,期间有不少坑,都没说明,一路摔得头破血流,在这里记录一下。我是Weex官网Weex 官方提供了 weex-toolkit 的脚手架工具来辅助开发和调试。首先,你需要 Node.js 和 Weex CLi,下面都是针对Windows环境的。安装Node.js首先在Node.js官网下载安装No
2017-08-27 21:56:24
3916
原创 square开源日历控件—CalendarPickerView源码导读
前言:公司前阵子更换了一个新的日历控件,如丝般顺滑。看了下发现,竟然出自大名鼎鼎的square!毕竟square出品,必属精品的,所以研读了一番,有了这篇文章。控件的Git项目在此:android-times-square整个项目结构比较简单,代码也不复杂:Demo效果图:首先来认识下此日历都由什么构成,建议边看下图,边看下面这段描述:整个日历 CalendarPickerView 继承自 Li
2017-08-18 20:39:36
4340
3
原创 一周项目知识点总结
本周做了不少需求,这里记录下,此间遇到的知识点。ViewPager速度的控制重写equals和hashCoderadioButton自定义样式属性动画ViewPager速度的控制在项目中经常遇到产品这样的需求:要自定义控制ViewPager滑动的速度,而原生ViewPager滑动的速度是无法更改的,因此这里的解决方式是用反射替换ViewPager中的Scroller。首先自定义一个暴露滑动速度
2017-07-13 17:03:37
553
原创 自定义实现带三角下标的TabLayout
在开发中,我们常常需要ViewPager结合Fragment一起使用,如下图:我们可以使用Design support library库的TabLayout去实现,但是TabLayout只能用横线指示器,如果想要其他指示器,比如三角下标,该控件就不能用了。我们可以找网上成熟的轮子进行修改,比如:PagerSlidingTabStrip楼主这里在项目中需要用到带三角下标的TabLayout,亲身研究了
2017-07-06 15:35:27
3099
5
原创 使用SVG路径图制作线追踪特效
近期看了几篇三精-大精wing的“交互炸了”系列文章,收获颇多,这里学习记录一下。本篇主要记录如何动态绘制曲线,从而形成很精致的特性,先上图:知识点一览:SVG简介SVG路径如何制作并使用SVG路径图如何动态绘制曲线如何制作GIF图SVG简介SVG 意为可缩放矢量图形(Scalable Vector Graphics),使用 XML 格式定义图像。其优势: SVG 可被非常多的工具读取和
2017-01-05 17:46:56
6668
转载 Android Studio中那些让你相见恨晚的操作集锦
声明,本文转自:http://www.open-open.com/lib/view/open1482891781812.htmlfor循环新玩法遍历集合的时候, 对象.for 就可以生成迭代循环遍历:.fori 可以这样:.forr 可以反向:数字.for 也可以:判空原来可以这样写在写代码的时候,判空是不可避免的。判空可以这样, 对象.null :非空可以这样, 对象.notnull :非空还有
2016-12-29 15:29:19
664
原创 关于android版本兼容的一些问题
近期关于项目中踩了一些兼容性的bug,这里记录一下。第一个是用友盟分享组件6.1.1版本,SDK中的分享面板不支持自定义面板背景,比如我想换一个圆角背景,就没办法。于是就反编译看了他们的代码,然后黑了一下,加入了自定义背景接口。结果线上出现了一个bug,原因是下面这段我加入的代码:if (this.mConfig.mShareboardBgDrawable != null) {
2016-12-26 12:30:40
1663
转载 .9图讲解
转自:http://www.cnblogs.com/vanezkw/archive/2012/07/19/2599092.html什么是.9图片至于什么是.9图片这里就简单提一下,即图片后缀名前有.9的图片,如pic.9.png、pic1.9.jgp,诸如此类的图片就称为.9图片。.9图片的作用①.9图片的作用是在图片拉伸的时候特定的区域不会发生图片失真,至于哪些部分不会失真那么得看你的图片是如何绘
2016-12-07 15:59:24
690
原创 git reset 应用场景示例
今天使用eclipse的git插件进行代码合并时,又出现了匪夷所思的事: 我本地commit后,pull远程仓库,merge过程中不知道出现什么错误,导致我当时的本地仓库处于merging状态,代码一部分更新了,一部分没更新。由于更新的代码量比较大,一点一点区分过于困难,一度不知所措。后来经git大神一句指点,直接把我local还原到HEAD,尝试重新pull就可以了,也就是使用 git re
2016-12-07 13:22:12
2017
原创 git忽略文件失效解决方案
我们都知道使用git进行忽略文件时,有多种方法,最经常使用的是,自定义.gitignore文件,把忽略规则定义好。但是这个过程中,经常遇到,虽然我添加了某类型的文件,每次更新时,依然会提示此类型文件有更改。 可以使用如下命令:git update-index --assume-unchanged <name>是需要忽略的文件或格式,比如,使用eclipse时,忽略.project文件:git up
2016-11-10 11:00:14
1488
原创 git命令大全
创建版本库$ mkdir learngit$ cd learngit$ pwd/Users/michael/learngitpwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michael/learngit。初始化仓库 git init$ git initInitialized empty Git repository in /Users/michael/learngit
2016-11-04 14:01:05
451
原创 数字政通面试总结
还是先说说整体感受。整体相对于互联网来说,比较简单,都是基础,技术问题也不深入,项目也没问太多。一面ScrollView跟ListView嵌套会出现什么情况?如何解决?这种方案有什么缺点? ListView无法正确显示和正常滑动。 解决方案:自定义自适应ListView. @Override /** * 重写该方法,达到使ListView适应ScrollView
2016-10-09 22:08:39
4686
原创 魅族面试总结
经过前期一大批互联网的高压训练(天天笔试),在Java基础和算法上已经有了明显提升,但是对于面试,还存在经验不足的问题。总的来讲,魅族面试相对互联网要简单的多,技术面没有问很深。一面静态广播和动态广播的主要区别 主要是动态广播优先级高于静态广播,再者就是注册方式和生命周期的区别。Android性能优化几点建议 Android应用开机出现白屏的原因 通常android应用从启动到打开第一个
2016-10-09 21:48:34
2549
6
原创 2016秋招之路前传
从本篇博客开始陆续记录下即将到来的各种面试。先介绍下背景:博主本科二本,研究生武汉211,不是科班出身,因为老板开公司的缘故,才走上了程序员之路。中间给老板打工了一年半,项目经验还可以,基础较差,所以从今年7月开始就回学校安心看书了,忘了说,博主是Android方向。从7月至今,一直在牛客上刷题,按牛客上Android的培养方式,主要刷四大块:数据结构及算法、Java、操作系统、网络基础,...
2016-09-01 12:08:23
719
原创 Java泛型解惑
初识泛型关于泛型的使用,我们平时使用最多的可能就是如下场景:List<String> list = new ArrayList<String>();<>就是泛型的标志。以前对泛型理解不深,以前认为,在上面这段代码中:List这个容器,可以插入不同类型的对象。泛型给我们编码提供了一种便利,我们只需要在用的时候决定插入对象的类型,可以是String,可以是Integer,全凭我们实际需要。没错,这是我
2016-08-27 15:06:47
1133
1
原创 位运算在Android Flag中的巧妙使用
我们都知道Android源码,博大精深,但似乎还有一些细节被我们忽略。一、诡异的Flag从以前就发觉,android源码中一些Flag设置的很诡异,比如WindowManager.LayoutParams中的一些Flag:public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001;public static fi
2016-08-25 20:32:02
3021
录音并转码MP3,带监控音量
2015-11-06
开源LAME源码(最新)
2015-11-03
arcgis for android如何设计一个中间带箭头的直线样式?如图
2015-04-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人