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操作

时间: 2024-10-11 23:33:26

50 Android Hacks阅读笔记的相关文章

读书笔记_《50 Android Hacks》之一 linearlayout的weightsum及weights

最近在读<50 Android Hacks>,准备谢谢读书笔记,并不断丰满一下. 听到过这样的问题,“如果我想让一个button占父控件的50%,应该怎么办”. 通常来说,我们可以使用linearlayout其中的属性  android:layout_weight属性 在实现方法上来说,有几种方法来实现. android的设备有不同的size,对于不同的屏幕尺寸,我们应该有一种普遍 适用的方法. 我们可以使用layout_weight以及weightSum属性来填满layout的剩余空间. 其

&lt;50 android hacks&gt;中的卡牌问题---自定义ViewGroup

学安卓的时间并不算短,但是一直都没有认认真真的看过,前段时间看见<50 android hacks>,觉得这本书写的真的不错,国内也有中文版. 要求显示上面的效果,通常我就会用RelativeLayout和layout_margin*来实现 In this hack, we'll look at another way of creating the same type of layout-we'll create a custom View- Group . The benefits of

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

问题: 你需要更新应用的Gradle版本. 解决方案: 生成一个新的wrapper,或者直接修改属性文件(.properties). 讨论: Android Studio包含了一个Gradle的分发.当你创建一个新的android应用的时候,IDE自动为Unix和windows生成gradlew和gradlew.bat脚本.这些"wrapper"脚本允许你再没有安装gradle之前使用它.替代的,wrapper脚本自动下载并安装指定版本的gradle. 软件工程持续了很长时间,grad

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.2——将Eclipse开发的项目导入到AndroidStudio

问题: 你想要将一个Eclipse ADT项目导入到Android Studio中. 解决方案: Android Studio提供了一个导入向导,可以重写已有的项目. 详细: 在Android Studio的欢迎页上,显示导入eclipse或者gradle项目的向导按钮. 链接会打开导航让你选择已有Eclipse项目的文件地址.使用老的项目结构,res,src和AndroidManifest.xml都直接在根目录下.如: 选择好目标目录,导航提供了一个将jar包转化为gradle下的依赖,以及其

Android开发:《Gradle Recipes for Android》阅读笔记1.5

这节讲的是如何如何添加JAVA依赖库. 默认的android项目有两个build.gradle文件,分别位于顶级目录,和应用自己的目录下(通常放在一个叫app的目录下面). gradle支持多种方式列举依赖库,最常用的方式是用引号包括,冒号分割group,name,version的方式.(gradle是使用Groovy的,所以支持单双引号字符串,后面章节会详细讲) 每个依赖都会和某个配置关联.android项目包括compile,runtime,testCompile和testRuntime配置

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

问题: 你想要使用Robotium库测试activity. 解决方案: 增加Robotium依赖,编写自己的测试脚本. 讨论: Android Test Support Library提供类可以操作activity里的窗口部件,但是有更简单的方式操作Android UI.虽然这本书不是介绍测试的,但是可以很容易的将Robotium依赖增加到Gradle然后运行测试. Robotium项目被描述成"像Selenium,但是为了Android".这是一个自动化测试框架,可以很方便的为And

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.3——整合resource文件

问题: 想要在product的flavor里面改变图片,文字或者其它资源. 解决方案: 在flavor里面增加合适的资源目录,并且改变他们包含的值. 讨论: 考虑下3.2章的"hello world with attitude"应用,它定义了三个flavors:arrogant,friendly和obsequious.在每个情况下,app提示用户输入姓名,并且用这个姓名欢迎用户.每个的java代码都是相同的,但是看上去和感觉上好像每个都不一样. product的flavors在grad

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types

问题: 你想要自定义debug和release的build types,并且新建一些新的types. 解决方案: 使用buildTypes块配置build types. 讨论: build type决定了app如何被打包.默认的,android的gradle插件支持两种build type:debug和release.两种都在模块的build.gradle文件中的buildTypes块下定义.在新的项目下的buildTypes块如下: 例子中值显示了release的build,但是想要编辑默认配

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.6——签署发布apk

问题: 为了将APK发布到google市场,需要对APK数字签名. 解决方案: 可以使用java的keytoll命令去创建一个证书,并且在gradle配置文件的signingConfigs块使用. 讨论: 所有的APK在发布之前都必须签名.默认的,Android用一个已知的key对测试的APK进行签名.你可以使用java的keytool命令行看到. debug的密钥存储在home目录下的一个叫.android的目录下.密钥的默认名叫debug.keysore,并且有一个android密码. 在命