Android
文章平均质量分 80
TellH
Keep passion! Fuel with code!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《第一行代码--Android》读书笔记之日志工具Log与Activity
日志工具LogActivityActivity的创建与注册在Activity中使用MenuIntent之于活动创建ActivityIntent传递数据的使者活动的生命周期活动的启动模式启动活动的最佳写法随时随地退出程序日志工具LogLog.v(String tag,String msg);//verbose级别,最琐碎 Log.d(String tag,String msg);原创 2015-11-17 20:21:31 · 2302 阅读 · 0 评论 -
偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
前言昨天开始接触江湖口碑很好的RecyclerView,事实上,我已经被她的强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦,灵活优雅。其实,RecyclerView在使用上已经是相当简单了(个人觉得),但仍有很多代码是可以加以封装的。今天受简书上一篇博文的启发,作为写代码喜欢优(tou)雅(lan)的人,想到了一种封装方式,打造万能适配器,供大家食用。正统模式:pu原创 2016-02-15 21:56:07 · 9297 阅读 · 3 评论 -
解读Google官方SwipeRefreshLayout控件源码,带你揭秘Android下拉刷新的实现原理
前言想必大家也发现,时下的很多App都应用了这个Google出品的SwipeRefreshLayout下拉刷新控件,它以Material Design风格、适用场景广泛,简单易用等特性而独步江湖。但在我们使用的过程中,不可避免地会发现一些bug,或者需要添加某些特性来满足需求。出现这些问题,最好的方法就是解读源码,理解它实现的原理,并且在理解源码的基础上修改源码,达成需求。然而不知为何,至今还没有一原创 2016-03-02 22:42:04 · 10899 阅读 · 7 评论 -
实现类似微信Viewpager-Fragment的惰性加载,lazy-loading
前言今天起床,拿起手机开机第一时间当然是打开微信了,左右滑动Viewpager,发现它使用了一种叫惰性加载,或者说懒加载(lazy-loading)的方式加载Viewpager中的Fragment。效果如图: 什么是lazy-loading呢?顾名思义就是在必要的时候才加载,否则不进行View的绘制和数据的加载。原因是Viewpager一次只会显示一个页卡,那么刚开始的时候,只需加载第一张Frag原创 2016-02-20 20:47:36 · 12567 阅读 · 8 评论 -
用最优雅的方式startActivity
相信很多人看到标题startActivity可能会轻蔑一笑,启动Activity不是Android开发里基础得不能再基础的内容吗? 但相信点进来的各位看官都是追求优雅编码的开发者:) 。我要用一个优雅的姿势,最小的代码来启动一个Activity。原创 2016-08-04 13:33:39 · 19850 阅读 · 15 评论 -
消灭模板代码,自定义AndroidStudio文件模板(1)
Previously我们日常开发肯定会或多或少遇到写模板代码的时候,比如写Adapter、写单例类、写用Parcelable实现序列化的相关代码、写实现Mvp架构的相关接口等等。但作为一个追求优雅编码的人,我一直崇尚“Write the code you have to write ”,快速高效地开发。这系列文章将分享如何将AndroidStudio打造成消灭模板代码的利器。照葫芦画瓢当我们在工程中原创 2016-08-12 23:08:26 · 2000 阅读 · 1 评论 -
消灭模板代码,自定义AndroidStudio文件模板(2)
在上一篇讲到的自定义AndroidStudio文件模板的方法,但这种方法虽然简单却只能一次生成一个文件。有没有方法能一键生成一套文件呢?原创 2016-08-13 12:53:37 · 3129 阅读 · 0 评论 -
图解+源代码 全面理解Android View事件分发
View事件分发是Android里面非常重要的知识点,我查阅了很多资料,新建demo分析Log日志加以验证,总结成这篇博文。宏观的角度View 事件分发涉及到三种角色,三个方法,三种重点事件,分别是Activity,ViewGroup,View;dispatchTouchEvent, onInterceptTouchEvent,onTouchEvent和ACTION_DOWN,ACTION_MOVE原创 2017-02-21 21:35:52 · 1075 阅读 · 0 评论 -
浅析AIDL的使用和工作原理
AIDL是一种接口定义语言,用于生成可在Android设备上两个进程之间进行进程间通信(IPC)的代码。AIDL的使用新建一个aidl文件,定义进程间通信的接口// IStudentManager.aidlpackage com.tellh.androidart;// Declare any non-default types here with import statementsimpor原创 2017-02-14 15:41:25 · 1389 阅读 · 0 评论 -
图解Activity的启动过程
由于Activity的启动涉及大量IPC和Binder方面的知识,因此了解这方面的知识后再来看Activity启动的相关源码可能不会那么吃力。原创 2017-02-26 17:13:17 · 6443 阅读 · 2 评论 -
判断Listview滑到顶部的最精准方案,解决Listview设置EmptyView与SwipeRefreshLayout冲突
故事发生的背景SwipeRefreshLayout是谷歌自家控件,提供下拉刷新的功能。然而这个控件简单易用的同时也有一个令人头疼的缺点,那就是它里面只能包含一个子View!有一天,需求来了,需要在为Listview添加EmptyView和下拉刷新,同时当显示EmptyView时也要求有下拉刷新。尝试与探索大家都知道,设置EmptyView需要把它放在一个容器内。这还不简单,SwipeRefreshL原创 2016-02-14 13:29:01 · 4395 阅读 · 1 评论 -
用全屏DialogFragment代替Activity,结合ViewPager展示图片
最近在知乎上看到一篇很不错的分享,关于Fragment的一些用法和开发经验,其中提倡用全屏的DialogFragment代替Activity处理一些特殊的场景,比如用户点击item触发打开一些内容详情页,相册点击小图片时会将图片全屏放大展示...等等的这些场景都可以考虑用全屏的DialogFragment来代替Activity来代替进行视图的展示。由于具体的代码逻辑非常简单,我就直接上代码了,注释原创 2016-01-26 23:28:02 · 3791 阅读 · 1 评论 -
《第一行代码--Android》读书笔记之内容提供器
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据的共享功能,是android的四大组件之一。内容提供器的用法一般有两种,一种是使用向右的内容提供器来读取和操作相应程序中的数据;另一种是创建自己的内容提供其给自己程序要共享出去的数据提供外部访问接口。访问其他应用程序中的数据 通过Context中的getContentResolver()方法得到ContentReso原创 2015-11-21 10:19:01 · 955 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之数据存储
文件存储:有用android的文件存储用的是java IO流那一套,所以这里先简单地总结一下java IO的一些重要知识点。 IO流分为两大类,字节流和字符流,它们之间的桥梁是outputStreamWriter和inputStreamReader。字节流,处理一些二进制编码的文件,比如MP3,音频文件的读取和写入用字节流处理会方便一些。为了能够提高读写效率,一次性把数据写、读。我们采用D原创 2015-11-20 22:09:19 · 1191 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之多线程与服务
服务(service)是Android中实现程序后台运行的解决方案。服务并不是运行在一个独立的进程中,而是依赖于创建服务所在的应用程序的进程。实际上,服务并不会自动开启线程。android多线程编程线程的基本用法新建一个类继承自Thread,重写父类的run()方法,在里面写耗时的逻辑。 class MyThread extends Thread{ @override原创 2015-11-22 12:50:00 · 1283 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之使用通知和多媒体
使用通知(Notification) 我发现很多android系统的特色服务都是需要获得~Manager来管理的,比如LocalManager(获取定位服务),SensorManager(获取光照传感器服务)等等。通知属于系统的特色服务,需要一个NotificationManager来管理。 NotificationManager=(NotificationManager)getSystemS原创 2015-11-21 20:05:24 · 1257 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之网络编程
浅用WebView简单配置布局 <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webview_1"> </WebView>具体代码public class MainActivity原创 2015-11-23 09:52:06 · 1616 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之前言
如今的移动开发风起云涌,作为一个在校大二学生,我也不可避免地入了Android开发的坑。我开始起笔写这一读书笔记系列的今天已经是11月中旬了,不由得感叹,时间过得真快啊,转眼间又接近学期尾了,却犹如昨天才开学呢。说到底,我还是这个学期开学才开始学java呢,因为大一学了C++的原因,java的语法掌握得还是很快。所以我用了两个星期把学校的java教科书自己自学看完,对java的基础语法有了大概的了解原创 2015-11-17 20:11:21 · 1246 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之UI篇
比较难掌握的UI控件ProgressBarXML属性: android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式 android:progress:初始化进度条的值 android:max:最大进度值 style=”?android:attr/progressBarStyleHorizontal”:设原创 2015-11-18 15:06:50 · 990 阅读 · 1 评论 -
让人惊叹的Android Studio快捷键总结
Win/Linux:alt+up/down;Mac:ctrl+up/down实现在类或方法间瞬移光标。 Win/Linux:ctrl+f12;Mac:cmd+f12弹出文件中的类和方法结构图,并可以查找并定位类成员和方法。按esc取消。 Win/Linux:ctrl+alt+h;Mac:ctrl+alt+h展示一个方法调用路径层级图 Win/Linux:ctrl+shift+i;Mac:alt原创 2015-11-25 20:57:10 · 3730 阅读 · 4 评论 -
《第一行代码--Android》读书笔记之碎片
碎片的基本用法: 碎片(fragment)是能嵌在活动中的UI片段,相当于mini型的Activity,有完整的布局,和生命周期。一个简单的碎片的创建过程: 新建一个碎片布局,比如,fragment.xml自定义一个继承自Fragment类的类,并重写onCreateView()方法,动态加载碎片布局。在被嵌入碎片的Activity的布局文件中加入< fragment>标签,要注意添加an原创 2015-11-19 13:12:38 · 1510 阅读 · 0 评论 -
《第一行代码--Android》读书笔记之广播机制
广播的类型标准广播(Normal Broadcasts)是完全异步执行的广播,在广播发出后,几乎所有的广播接受器都同一时间接收到这条广播消息,放射性传播的消息。有序广播(Ordered Broadcasts)是同步执行的广播,在广播发出后,只有一个广播接收器接收到这条广播消息,它在处理完消息后可以选择继续串型传播这条消息,也可以选择截断这条消息的传播。接受系统广播 要接收广播,首先当然要创原创 2015-11-19 17:35:46 · 1139 阅读 · 0 评论 -
一起来造一个RxJava,揭秘RxJava的实现原理
RxJava是一个神奇的框架,用法很简单,但内部实现有点复杂,代码逻辑有点绕。我读源码时,确实有点似懂非懂的感觉。网上关于RxJava源码分析的文章,源码贴了一大堆,代码逻辑绕来绕去的,让人看得云里雾里的。既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理。什么是响应式编程首先,我们需要明确,原创 2017-05-10 15:33:46 · 36998 阅读 · 20 评论
分享