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阅读笔记的更多相关文章

  1. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.4——更新新版本的Gradle

    问题: 你需要更新应用的Gradle版本. 解决方案: 生成一个新的wrapper,或者直接修改属性文件(.properties). 讨论: Android Studio包含了一个Gradle的分发. ...

  2. 《第一行代码--Android》阅读笔记之界面设计

    1.单位dp.dip.sp.pt.px.in.mm 这里引用StackOverFlow上的一个解答: px is one pixel. sp is scale-independent pixels. ...

  3. 《第一行代码--Android》阅读笔记之Activity

    1.BaseActivity里面可以干什么 定义一个Context定义一个TAG 记录当前的Activity名字getClass().getSimpleName(); 2.Activity里面的几个重 ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.2——DSL文档

    问题: 你需要查找Android Gradle DSL的完整文档. 解决方案: 访问Gradle Tools网站,从Android开发网站下载ZIP文件. 讨论:Android开发网站首页有完整的AP ...

  5. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.1——推荐配置

    问题: 你想要提高Gradle的构建效率. 解决方案: 使用下面推荐的技术组合. 讨论: 首先,这里没有可以影响app表现的建议.有很多你可以做的事来提高app,很多都和Android的混淆工具有关. ...

  6. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.4——使用Espresso测试Activity

    问题: 你想要使用Google的Espresso测试Activity. 解决方案: 在Gradle配置里面增加Espresso,书写测试脚本. 讨论: Espresso测试库已经被添加进“Androi ...

  7. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.3——使用Robotium进行功能测试

    问题: 你想要使用Robotium库测试activity. 解决方案: 增加Robotium依赖,编写自己的测试脚本. 讨论: Android Test Support Library提供类可以操作a ...

  8. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.2——使用Android Testing Support Library进行测试

    问题: 你想要测试app的Android组件. 解决方案: 使用新的测试类实现JUnit风格的测试. 讨论: 测试像activities,services等的Android组件,需要将app部署到连接 ...

  9. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试

    问题: 你想要测试app中的非android部分. 解决方案: 可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件. 讨论: ADT插件只支持集成测试,并 ...

随机推荐

  1. C#与C++之间类型的对应

    Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUB ...

  2. 深入学习golang(5)—接口

    接口 概述 如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构 ...

  3. 私有云android客户端2.1.2最新版本(ownCloud简体中文优化版)

    通过安装Ubuntu16.04+LAMP+ownCloud9.1+SSL建立私有云,下载ownCloud android客户端最新源码,针对国际语言简体中文化,修改部分代码,并进行补充.优化,编译生成 ...

  4. 线程互斥与析构函数中mutex的销毁

    正在实现一个线程池的pthread包装器,突然发现有人在讨论关于http://blog.csdn.net/Solstice/article/details/5238671 是一篇比较老的文章,考虑了下 ...

  5. Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

    由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...

  6. sctp和tcp的区别

    作为一个传输层协议,SCTP兼有TCP及UDP两者的特点.SCTP可以称为是TCP的改进协议,但他们之间仍然存在着较大的差别.首先SCTP和TCP之间的最大区别是SCTP的连接可以是多宿主连接的,TC ...

  7. UML 六种关系

    .继承, 男人 和 人 的关系2.实现, 孕妇 和 生宝宝 的关系3.依赖, 人 和 大米.水4.关联, 男人 和 工作5.聚合, 弱整体和部分, 轮子和车6.组合, 强整体和部分, 眼睛和人 参考: ...

  8. Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件

    点击进入:Window bat expdp 定时任务逻辑备份 定时删除N天前的旧文件 创建sh脚本 [oracle@localhost ~]$ vi logicbackup.sh 添加脚本内容 #!/ ...

  9. C#的设计模式分为3大类23种

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method ...

  10. php利用smtp发送邮件

    PHP : 5.6.8 email工具类下载地址: http://files.cnblogs.com/files/rhythmK/email.class.zip 发送邮件代码如下: require_o ...