50 Android Hacks阅读笔记
Hack 1.善用weightSum和layout_weight。
问题提出:尝试做一个button的宽度是父View的一半的效果。
关键词:weightSum = 1 , layout_weight=0.5
Hack 2.常用include和ViewStub
问题提出:如何减少复杂界面的绘制时间。
关键词:include复用,外部定义layout_width,layout_height;ViewStub占位,VISIBLE设置
Hack 3.自定义ViewGroup
问题提出:如何使用自定义ViewGroup,如何计算子View的位置和大小
关键词:自定义View,attrs使用
Hack 4.使用Preference
Android提供了一个PreferenceActivity和preferenceFragment等类来简化了Preference的实现,既然如此,简单的Preference可以使用它们实现,还可以通过继承一些Preference下属类,比如DialogPreference来实现更加灵活的配置
关键词:Preference,自定义Preference
Hack 5.使用TextSwitcher/ImageSwitcher
问题提出:如何快速为多文本切换添加动画效果?(同理Image切换)
关键词:Switcher
Hack 6.为ViewGroup下属的子View添加统一顺序执行的动画效果
问题提出:为某个拥有多个(相似)子View的ViewGroup的子View添加动画效果
关键词:LayoutAnimationController,ListView等
Hack 7.canvas绘图
自定义View的另一种重要部分,使用Canvas在屏幕上绘制图形或是图像,自定义动作等
关键词:Canvas
Hack 8.创作Ken Burns效果
问题提出:如何创建类似幻灯片切换的效果
关键词:AnimatorSet,ObjectAnimator
Hack 9.不用EditText来输入要被检验的Data
问题提出:要验证一个用户输入的时间格式比较麻烦,用Button检测输入行不行?
关键词:为控件自定义background
Hack 10.格式化TextView的文本显示
问题提出:如何实现在TextView下显示简单的HTML语法,或是为部分文本加入前景色或是背景色
关键词:SpannableString,BackgroundColorSpan,ForegroundColorSpan
Hack 11.制造发光文字
问题提出:

关键词:Typeface,assets/fonts,XML(shadowColor,shadowRadius,shadowDx,shadowDy)
示例:
public class LedTextView extends TextView {
public LedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
AssetManager assets = context.getAssets();
final Typeface font = Typeface.createFromAsset(assets,"fonts/digital-7.ttf");
setTypeface(font);
}
}
Hack 12.圆角背景
使用drawable不仅能用png图片(特别是现在ic_launcher是mipmaps下的),还能使用xml自定义一些图形和状态显示,比如press,select
关键词:drawable,xml( shape corners),ShapeDrawables
Hack 13.在onCreate中获取View的宽和高
问题提出:在onCreate调用完成之前,layout方法不会被调用,因此在onCreate是无法获取View的宽和高的
关键词,view.post,runable,getWidth,getHeight
Hack 16.设定Toast位置
关键词:延迟show,设置gravity
Hack.18.使用ProGuard移除Log代码
关键词:AndroidStudio内置使用了ProGuard
Hack 20.使用Model-View-Presenter模式
关键词:MVP
Hack 21.SyncAdapter的使用
关键词:Service,Provider,SyncAdapter
Hack 27.通过Delegate在Activity和Adapter上同步设置
关键词:第三方Delegate,Adapter,View
hack 41 .ORMLite数据库
关键词:ORM数据库在复杂情况下替代SQLite
Hack 43绑定一系列的数据库操作
关键词:applyBatch,加速大范围频繁database操作
50 Android Hacks阅读笔记的更多相关文章
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.4——更新新版本的Gradle
问题: 你需要更新应用的Gradle版本. 解决方案: 生成一个新的wrapper,或者直接修改属性文件(.properties). 讨论: Android Studio包含了一个Gradle的分发. ...
- 《第一行代码--Android》阅读笔记之界面设计
1.单位dp.dip.sp.pt.px.in.mm 这里引用StackOverFlow上的一个解答: px is one pixel. sp is scale-independent pixels. ...
- 《第一行代码--Android》阅读笔记之Activity
1.BaseActivity里面可以干什么 定义一个Context定义一个TAG 记录当前的Activity名字getClass().getSimpleName(); 2.Activity里面的几个重 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.2——DSL文档
问题: 你需要查找Android Gradle DSL的完整文档. 解决方案: 访问Gradle Tools网站,从Android开发网站下载ZIP文件. 讨论:Android开发网站首页有完整的AP ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.1——推荐配置
问题: 你想要提高Gradle的构建效率. 解决方案: 使用下面推荐的技术组合. 讨论: 首先,这里没有可以影响app表现的建议.有很多你可以做的事来提高app,很多都和Android的混淆工具有关. ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.4——使用Espresso测试Activity
问题: 你想要使用Google的Espresso测试Activity. 解决方案: 在Gradle配置里面增加Espresso,书写测试脚本. 讨论: Espresso测试库已经被添加进“Androi ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.3——使用Robotium进行功能测试
问题: 你想要使用Robotium库测试activity. 解决方案: 增加Robotium依赖,编写自己的测试脚本. 讨论: Android Test Support Library提供类可以操作a ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.2——使用Android Testing Support Library进行测试
问题: 你想要测试app的Android组件. 解决方案: 使用新的测试类实现JUnit风格的测试. 讨论: 测试像activities,services等的Android组件,需要将app部署到连接 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试
问题: 你想要测试app中的非android部分. 解决方案: 可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件. 讨论: ADT插件只支持集成测试,并 ...
随机推荐
- 于网站主机,DNS,域名解析,Web服务器关系详解
/*本文将介绍网站主机,DNS,域名解析,Web服务器关系,转载请保留以下版权*/ /*启明星工作室 www.dotnetcms.org 提供会议室预定系统,请假系统,helpdesk,工作日志系统 ...
- ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义 .的分析解决办法 (转)
很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇. 如果你使用的作业系统是 Linux.Mac 或其他非 W ...
- gpg的一些常用操作
(1)列出keys # gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/98681A63 2 ...
- shell变量注意事项
概念:变量赋值,变量替换,变量引用,命令替换 variable=22 echo variable 可以在同一行设置多个变量.例如 va1=good va2=chif va3=beijing #需 ...
- ngnix编译遇到的问题.
总结:先后遇到libz库文件没有正确的链接和pcre库文件没有正确的链接 1./configure后提示需要zlib 2.locate zlib,系统中没有zlib的共享库so文件,但是有一些头文件, ...
- 一种可以避免数据迁移的分库分表scale-out扩容方式
原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...
- Codeforces Round #381 (Div. 1) A. Alyona and mex 构造
A. Alyona and mex 题目连接: http://codeforces.com/contest/739/problem/A Description Alyona's mother want ...
- 代码生成器Sql Server 和 Mysql 数据库脚本
经常用到代码生成器,对于取数据脚本做个记录: #region SQL-SqlServer private string SqlTableList = @"SELECT so.name, Co ...
- vim 光标按行移动
记录一下: [ H/M/L ] 注意:这几个命令是大写的. 使用H/M/L这三个键,可以让光标跳到当前窗口的顶部.中间.和底部,停留在第一个非空字符上.H命令和L命令前也可以加一个数字,但数字的含义不 ...
- [转] Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装、配置
本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文 ...