- 博客(81)
- 收藏
- 关注
原创 Android-App 常用图标尺寸规范汇总
1. 程序启动图标(icon launcher)放在mipmap-*dpi下,文件名为ic_launcher.pngLDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。HDPI (High Density Screen,
2017-10-19 09:53:12
4051
原创 RecyclerView源码分析
我先从普通的AdapterView和RecyclerView的比较说起,后面再详细介绍几个关键类。AdapterView vs. RecyclerViewItem复用方面:RecyclerView内置了RecyclerViewPool、多级缓存、ViewHolder,而AdapterView需要 手动添加ViewHolder且复用功能也没RecyclerView更加
2017-06-29 11:04:22
339
原创 RecyclerView使用介绍——企业实用
RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.介绍RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展
2017-06-29 10:34:42
385
原创 为什么要使用ItemDecoration
Part 1:不要用view做分割线首先,什么是ItemDecoration?来看看官网是如何解释的。ItemDecoration允许从adapter的数据集合中为特定的item视图添加特性的绘制以及布局间隔。它可以用来实现item之间的分割线,高亮,分组边界等。我们不能简单的把ItemDecoration看成一个名字响亮的分割线。它比divider要多很多内容。一个divider
2017-06-29 10:08:52
383
1
原创 Android O API 已发布最终版本,快来尝尝鲜
在三周前举行的 Google I/O 大会上,我们宣布了 Android O 的第二个开发者预览版,同时介绍了Fluid Experiences 和 Vitals 等重要主题,并且重点介绍了我们利用 Treble 项目实现库模块化方面的工作进展。此次大会上还发布了首个测试版质量级别的候选版本,这是我们的另一个重要里程碑事件。在主题演讲和分组会议上,我们详细介绍了 Android 的新功能。
2017-06-15 11:11:47
648
原创 ViewPager 系列之 打造一个通用的 ViewPager
背景CommonViewPager.pngViewPager是Android开发者比较常用的一个控件了,由于它允许数据页从左到右或者从右到左翻页,因此这种交互也备受设计师的青睐。在APP中的很多场景都用得到,比如第一次安装APP时的用户引导页、图片浏览时左右翻页、广告Banner页等等都会用到ViewPager。ViewPager 的使用和RecyclerView的使用方式很相似,熟悉Re
2017-05-31 11:10:16
1406
原创 Google 官方推出应用开发架构指南
最近,官方推出了一份关于应用架构的最佳实践指南。这里就给大家简要介绍一下:首先,Android 开发者肯定都知道 Android 中有四大组件,这些组件都有各自的生命周期并且在一定程度上是不受你控制的。在任何时候,Android 操作系统都可能根据用户的行为或资源紧张等原因回收掉这些组件。这也就引出了第一条准则:「不要在应用程序组件中保存任何应用数据或状态,并且组件间也不应该相互依赖」。
2017-05-22 10:17:03
2337
原创 Android Studio 3.0 Canary
Android Studio 3.0 Canary 发布对于 Android 开发人员来说,Google I/O 2017 最大的新闻莫过于 Kotlin 编程语言得到 Google 官方认可正式转正、名正言顺成为 Android 届的 Swift 这一消息啦。今早开始,各大水友群、媒体号和朋友圈简直刷到根本停不下来。然而,本文并不是要说 Kotlin 扶正这件事。Google I/O
2017-05-19 16:04:28
1641
原创 写给初学者的 —— Android线程间通信机制
先完整叙述一遍我们要讲解的问题:Android线程间通信机制一、两个关键词,两点疑问在"Android线程间通信机制"这句话中,有两个关键词需要我们需要搞清,一个是线程间,一个是通信,当我一开始深入思考这两个关键词的时候,心中就有了些疑问,可是很多博文也没有讲到,这也是导致我一开始看别人写的文章就稀里糊涂的原因,发现文章看完,疑惑还在,而疑惑就来源于这两个关键词。1、线程间我们知道
2017-05-16 09:34:27
289
原创 Android 开发之Service 探索如何保证Service不被杀死或被kill之后自动重启
1.我们要知道什么是Service?A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functiona
2017-05-15 13:39:39
697
原创 命令行下过滤adb logcat的输出
开发当中经常看到 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过滤方法。1. 只显示需要的输出,白名单最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:adb logcat | grep MyAppadb logcat | gre
2017-05-15 13:35:50
297
原创 Android 代码规范
先从Java源代码开始说起,要说Java源代码不得不先说下包名的命名规范。包名Android包名的命名规则,Andorid的包名一般采用域名的反转,单词全小写。比如域名为www.example.com的包名为com.example,省略www。包名开始是一个顶级域名,比如com,cn,org等,包名使用.做为分隔符。第二位一般是二级域名,也可以根据不同机构各自的命名。后面的命名
2017-04-10 09:11:53
525
原创 底部弹出DialogFragment+与Activity数据交互
先贴上效果图:效果图.jpg实现步骤特别简单:1.新建DialogFragment类,在OnCreateView中返回你自定义的view.public class ADDialogFragment extends DialogFragment{ @Override public View onCreateView(LayoutInflater inflate
2016-12-14 11:41:00
2757
原创 关于RxJava
RxJava到底是什么?让我们直接跳过官方那种晦涩的追求精确的定义,其实初学RxJava只要把握两点:观察者模式和异步,就基本可以熟练使用RxJava了。异步在这里并不需要做太多的解释,因为在概念和使用上,并没有太多高深的东西。大概就是你脑子里想能到的那些多线程,线程切换这些东西。我会在后面会讲解它的用法。我们先把观察者模式说清楚“按下开关,台灯灯亮”
2016-11-02 13:58:14
302
原创 Java中的内存泄漏
1.Java内存回收机制不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的
2016-11-01 15:26:37
372
原创 JavaSE 基础知识
基础八种基本数据类型的大小,以及他们的封装类。八种基本数据类型,int ,double ,long ,float, short,byte,character,boolean对应的封装类型是:Integer ,Double ,Long ,Float, Short,Byte,Character,BooleanSwitch能否用string做参数?在Jav
2016-11-01 14:35:51
333
原创 深入Java源码解析容器类List、Set、Map
1 常用容器继承关系图 先上一张网上的继承关系图 个人觉得有些地方不是很准确,比如Iterator不是容器,只是一个操作遍历集合的方法接口,所以不应该放在里面。并且Map不应该继承自Collection。所以自己整理了一个常用继承关系图如下: 如上图所示,接下去会自顶向下解释重要的接口和实现类。2 Collection和Map
2016-11-01 11:38:40
451
原创 Android开发者的混淆使用手册
毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的
2016-10-26 09:45:37
455
原创 Gradle For Android(三)Gradle优化与灵活的使用技巧
前面两篇记录了Gradle基础依赖、多渠道打包以及签名配置,对于各位程序猿来说,应该再熟悉不过了~在开发路上,依然要好好对自己的知识作为总结,今天这一篇依然是讲述日常开发中gradle中的应用以及在某些场景的使用技巧。目录1、善用占位符2、善用BuildConfig3、保护信息安全,方便的全局设置4、使用gradle.properties5、常见配置一、善用用占
2016-10-25 17:41:51
349
原创 Gradle For Android(二) 多渠道打包与签名配置
继上一篇Gradle基础篇后,现在记录下如何在gradle中进行多渠道打包与签名配置身为程序猿,谷歌被墙是众所周知的事情~因此,估计好多人都还没见过google play store。也许是在玩pokemon go,有特意去搞过吧哈~所以呢,现今国内有许多应用市场,什么小米、华为、360、百度等等,所以每次可能需要发版几十个渠道包。但是gradle为我们提供productFlavors,我
2016-10-25 10:48:15
1176
原创 Gradle For Android (一) 基础定义与依赖管理篇
基本配置首先在我们新建项目的时候如下图,构成一个完整的gradle管理的ProjectAndroidTGradle.jpeg其次这里简单描述下,这几个文件作用:(1) /gradle/gradle-wrapper.properties#Mon Dec 28 10:00:20 PST 2015distributionBase=GRADLE_U
2016-10-25 10:26:33
300
原创 Android总结之WebView使用总结
前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结。使用场景: 1.)添加权限uses-permission android:name="android.permission.INTERNET" /> 2.)布局文件 WebView android:id="@+id/we
2016-10-24 16:49:21
239
原创 Java学习之LinkedHashMap学习总结
需求背景: LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉,而实现LruCache将会频繁的执行插入、删除等操作,我们就会想到使用LinkedList,但是我们又要基于Key-Value来保存数据,这个时候我们就会想起HashMap,但是HashMap不能像linkedList那样保留数据的插入顺序,如果要使用HashMap的话可以使用它的一个子类LinkedHas
2016-10-24 15:29:44
245
原创 EventBus3.0更多实用使用
线程控制在EventBus中有4种线程控制的方式:1.POSTING:同步模式,顾名思义只中方式就是接收事件方法的线程和发送事件方法的线程一致,如果发送事件是在主线程中,那么接收事件也是在主线程中。如果发送事件的是在子线程,那么那么接收事件也会发送事件的子线程执行。总之会保持一致。2.MAIN:主线程模式,无论发送事件是在那个线程发送,接收事件一定会在主线程中执行。这样刚好就解决了只能
2016-10-10 10:03:41
302
原创 EventBus3.0快速上手
快速教你上手EventBus3.0,在EventBus3.0之前用法不同,就不在这里说了。准备工作,建立EventBus3.0的依赖:compile 'org.greenrobot:eventbus:3.0.0'基本使用1.在需要订阅的组件内注册事件:@Overrideprotected void onCreate(Bundle savedInstanceState) {
2016-10-10 09:39:15
218
原创 Espresso环境搭建及其基本使用
一、创建待测试项目在Android Studio环境下创建了一个EspressoDemo项目,作为下面测试的项目。仅为演示,所以只添加了一个启动页MainActivity.compileSdkVersion 23buildToolsVersion 23.0.312minSdkVersion 8targetSdkVersion 2312public class MainAct
2016-09-19 09:35:12
923
转载 Android Studio 如何打JAR包
Android Studio 如何打JAR包在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图:app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在librarydemo中加入如下代
2016-07-29 15:35:44
482
原创 部分手机拍照后照片被旋转的处理
在部分Android手机上使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°),这个情况很不符合预期。仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法中,获取到照片数据后,读取它的旋转信息,如果不是0,说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。
2016-07-19 16:27:26
764
原创 textview设置超出规定的长度时显示省略号
android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:maxEms="11" android
2016-06-29 17:35:58
898
转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
那么今天我们将继续上次未完成的话题,从源码的角度分析ViewGroup的事件分发。首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别?顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是Android中所有布局的父类或间接父类,像LinearLayout、RelativeLayout等都是继承自ViewGro
2016-05-21 00:03:26
256
转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
阅读源码讲究由浅入深,循序渐进,因此我们也从简单的开始,本篇先带大家探究View的事件分发,下篇再去探究难度更高的ViewGroup的事件分发。那我们现在就开始吧!比如说你当前有一个非常简单的项目,只有一个Activity,并且Activity中只有一个按钮。你可能已经知道,如果想要给这个按钮注册一个点击事件,只需要调用:[java] view plain copy
2016-05-21 00:01:44
268
转载 Android 自定义 ViewPager 打造千变万化的图片切换效果
记得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做。时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如何改变ViewPager切换时的效果,实现个性化的图片切换~~看一下这样效果的图片切换:是不是比传统的效果个性很多,嘿
2016-05-19 15:42:34
2579
转载 Android 属性动画(Property Animation) 完全解析 (下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38092093上一篇Android 属性动画(Property Animation) 完全解析 (上)已经基本展示了属性动画的核心用法:ObjectAnimator实现动画,ValueAnimator实现动画,AnimatorSet的使用等~当然了属性动画还有一部分
2016-05-19 15:40:03
323
转载 Android 属性动画(Property Animation) 完全解析 (上)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/380674751、概述Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限
2016-05-19 15:38:41
264
转载 Android ViewPager使用详解
这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter。看一下api的图片, ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那
2016-05-19 14:48:59
249
原创 深入解析AsyncTask
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小功能从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单,仅是在doInBackground中用HTTP请求把图
2016-05-14 10:27:31
218
转载 Android Fragment完全解析,关于碎片你所需知道的一切
Fragment初探为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和Im
2016-05-12 09:45:23
440
转载 Android Studio 高级配置
显示行号当我首次启动我的 Android Studio 的时候,我想做的第一件事就是希望能看到文件中的行号,我一直很奇怪这个基本的配置为毛不是默认开启的?!对此我只想说四个字:未显示行号显示行号配置方法File | Settings 打开设置选择 Editor | General | Appearance勾选 Show
2016-05-10 20:22:10
453
原创 EventBus使用详解(二)
一、概述前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是:1、onEvent2、onEventMainThread3、onEventBackgroundThread4、onEventAsync这四种订阅函数都是使用onEvent开头的,它们的功能稍有不同,在介绍
2016-05-10 10:31:15
780
原创 EventBus使用详解(一)
一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。1、下载EventBus的类库源码:https://github.com/greenrobot/EventBus2、
2016-05-10 10:28:41
920
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人