在日常开发中,想直接通过android:maxHeight或android:maxWidth在布局文件中限制RecyclerView的最大高度宽度,是无法实现的。通过自定义RecyclerView,覆盖onMeasure方法。在onMeasure方法内部,当发现自身高度或宽度超过限制的最大高度或宽度,则手动将宽或高设置为期望的最大宽或搞。具体代码实现如下: 继续阅读【转】RecyclerView限制最大高度或宽度
分类:android
MPAndroid–Android图表之饼图
饼图适合在什么地方使用?
饼图主要用于展现不同类别数值相对于总数的占比情况。图中每个分块(扇区)的弧长表示该类别的占比大小,所有分块数据总和为100%。当分块过多,容易造成饼图丑化,建议尽量将饼图分块数量控制在五个以内。当数据类别较多时,可以把较小或不重要的数据合并成第五个模块命名为”其它”。如果各类别都必须全部展示,此时选择柱状图或堆积柱状图或许更合适。
Android目前并没有原生支持的图表Api,所以如果要类似饼图之类的图表,只能自己撸代码或者用别人的轮子。自己撸代码,费时费力,而且容易引入无数的Bug。目前在GitHub比较成熟的的图表库就是MPAndroid,英文水平不错的可以撸文档,或者用Google翻译。
MPAndroid Github地址
这些年,我所经历的所有面试|写给正在求职的 Androider
节选自:这些年,我所经历的所有面试|写给正在求职的 Androider
面试涉及知识点/体系/书籍推荐
以下是面试中遇到的问题整理,有一些被我整理已被整理成博文,其他的都是我这些年积累的面试笔记,虽然不是很全面,但是已经是我保留的全部了。希望有帮助。
网络相关
设计模式
Android
- 源码必懂-xml加载流程
- 源码必懂码-Touch事件
- 源码必懂-Handler
- 源码解析-Rxpermissions
- 源码解析-LiveData
- Android类加载器
- Java类加载
- Rxjava 的归纳思考
- Framework基础结构
- Android虚拟机结构区别
- 启动app流程
- 启动framework流程
- Android架构总结
- 模式之MVC/MVP/MVVM
- 换肤skin-support流程
- 图片库glide
- 源码-AsyncTask
- 自定义view流程
- Activity相关
- Fragment基础
- View篇之Touch传递
- EventBus
- 泄漏类型及定位
- 性能可优化的点
其他
*排序算法
书籍推荐
- 《Java编程思想》
- 《Effective Java》
- 《突破Java程序员基本功的16门课》
- 《深入理解Java虚拟机》
- 《Android高级工程师进阶》
- 《Android研发录》
- 《Android开发艺术探索》
- 《打造高质量Android应用》
- 《Android应用性能优化》
- 《安卓内核剖析》
- 《深入安卓卷1》
- 《深入安卓卷2》
- 《Android系统源代码情景分析》
- 《巧用Gradle构建Android应用》
- 《Android高薪之路》
- 《Android群英传》
- 《程序员修炼之道–从小工到专家》
- 《代码的未来》
- 《第一行代码》
Android selector 相关文章
【转】Android recyclerview的滑动到指定的item
转载自:Android recyclerview的滑动到指定的item
注意点
1.滑动到指定位置的方法要写在数据真正加载完成以后,而不是加载数据方法的后面。
2.指定的位置是否可见。
快速定位
public static void MoveToPosition(int n) { manager.scrollToPosition(n); }
缓慢定位(借鉴网络上整理)
MVC, MVP and MVVM 对比
转载自:Android Architecture Samples
Comparing MVC, MVP and MVVM in android through a complete movie search app
This is the complementary repository to the series of articles on my website.
no-architecture app:
branch: no-architecture
article: android architecture: Part 1: introduction
Model-View-Controller (MVC) app:
branch: mvc
article: android architecture: Part 2: MVC
Model-View-Presenter (MVP) app:
branch: mvp
article: android architecture: Part 3: MVP
Model-View-ViewModel (MVVM) app using RxJava:
branch: mvvm-rxjava
article: android architecture: Part 4: MVVM with RxJava
Model-View-ViewModel (MVVM) app using LiveData and how it compares to RxJava:
branch: mvvm-livedata
article: android architecture: Part 5: MVVM with LiveData
Model-View-ViewModel (MVVM) app using LiveData and ViewModel:
branch: mvvm-liveData&viewModel
article: android architecture: Part 6: MVVM with LiveData and ViewModel
Model-View-ViewModel (MVVM) app using LiveData and ViewModel:
branch: mvvm-liveData&viewModel-revised
article: android architecture: Part 7: ViewModel with LiveData and RxJava
Model-View-Presenter (MVP) app using ‘easy-mvp’ library:
branch: mvp-easymvp
article: Easy MVP library for android
Android Studio Build Variants 相关文章
【转】Android进程内存简单排查
转载自:Android进程内存简单排查
前言
本文旨在仅用adb的命令快速排查内存问题
分析步骤
第一步:确认你的应用包名
本地有安装包时:aapt dump badging [yourapp.apk],你可以看到package: name=’com.xxx.xxxx’等信息及权限申请信息。
本地没有安装包,仅手机上安装时:adb shell pm list packages,查看已安装列表,肉眼识别可能是哪个。不想肉眼识别,可以启动对应app,然后执行:adb shell dumpsys window|findstr mCurrentFocus
第二步:确认你的应用当前有几个进程
adb shell “ps|grep com.xxx.xxxx”
也可以确定当前界面功能在哪个进程:
adb shell “dumpsys activity|grep com.xxx.xxxx”
在输出的堆栈中,找到mFocusedActivity部分的信息,底部进程列表会标记(top-activity)
当然adb shell “activity acitvities” 输出的信息中可以按照包名过滤,就能看到当前有哪些activity并且在哪个进程
第三步:查看指定进程的内存信息
adb shell dumpsys meminfo com.xxx.xxxx:xxxprocess
此处通过输出信息中的 Activities可以反复操作进出activity验证是否存在最浅显的Activity泄漏,通过对比Pss Total等的增长信息可以确定是否有其他内存泄漏。
第四步:进一步分析
adb shell
am dumpheap com.xxx.xxxx:xxxprocess /data/local/tmp/xxx.hprof
以上获取内存dump,然后取到pc本地
adb pull /data/local/tmp/xxx.hprof /pc本地目录/xxx.hprof
转换格式为ddms可识别
sdk目录/platform-tools/hprof-conv.exe /pc本地目录/xxx.hprof /pc本地目录/xxx-conv.hprof
拖动xxx-conv.hprof到mat就可以详细分析内存堆栈中的Activity对象及其他信息了
注:通过 am dumpheap 命令生成的文件可以直接被 Android Studio 打开