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. Javascript:常用函数封装

    //cookie function setCookie(name, value, iDay) { if(iDay!==false) { var oDate=new Date(); oDate.setD ...

  2. iOS相册、相机、通讯录权限获取

    iOS相册.相机.通讯录权限获取 说明 这是本人写的一个工具,用以便利的处理各种权限获取的操作,目前提供相册.照相机.通讯录的权限获取操作,参考了 http://www.jianshu.com/p/a ...

  3. C# 动态修改dll的签名 以及修改引用该dll文件的签名

    在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...

  4. HashMap工作原理(转载)

    转载自:http://www.importnew.com/7099.html  HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用Hash ...

  5. 【Android开发坑系列】之事件

    总结一下: 1.Touch事件分发中只有两个主角:ViewGroup和View.ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouchE ...

  6. BarManager.ContextMenu

    <!--Search & List Area--> <dxb:BarManager Name="barManager1" dxlc:DockLayoutC ...

  7. Ios开发之sqlite

    Sqlite是ios数据存储的一个重要手段,今天我们就一块来看一下,怎样使用sqlite将数据存储到沙盒中去. 第一步:导入一个框架libsqlite3.0.dylib 选中TARGETS在Gener ...

  8. 美行Thinkpad八通道快捷入口

    美行Thinkpad八通道快捷入口 链接: http://shop.lenovo.com/perksoffer/us/en/laptops/thinkpad/?__followRobots=true打 ...

  9. 解决tkinter在windows上没有正确安装的问题

    问题 Can't find a usable tk.tcl in the following directories: 解决方法 加两个环境变量,在我的机器上是这样的 TCL_LIBRARY=D:\d ...

  10. 1.C#中通过委托Action消除重复代码

    阅读目录 一:重复的代码  二:使用委托消除重复代码     一:重复的代码    我们在写一些方法的时候,会在里面可能出现异常的地方使用try catch语句,这样每个方法都会有try catch语 ...