1.抗锯齿(会占用系统资源)
对于线条:mPaint.setAntiAlias(true);
对于图片:canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG));
线条和图片都要抗锯齿效果:canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG));
2.绘图时只画边界。如:画一个圆,内部不填充。
mPaint.setStyle(Style.STROKE);
3.使用SurfaceView如何清屏?
为canvas调用drawColor方法,设置颜色即可。
4.APK应用程序的入口:
每个APK应用程序有且仅有一个ActivityThread类,程序的入口为该类中的static main()函数。
5.Handler避免子类化 :
Handler中定义了一个Callback接口
/**
* Callback interface you can use when instantiating a Handler to avoid
* having to implement your own subclass of Handler.
*/
public interface Callback {
public boolean handleMessage(Message msg);
}
所以在构造Handler时,使用Callback为参数的构造方法:
/**
* Constructor associates this handler with the queue for the
* current thread and takes a callback interface in which you can handle
* messages.
*/
public Handler(Callback callback) {
......
}
6.UI与线程
多数情况下,只能在主线程中修改UI。而对于ProgressBar,可以在工作线程调用其setProgress()方法。
7.创建MediaPlayer,结果出现NullPointerException空指针异常:
mPlayer = MediaPlayer.create(getContext(), R.raw.ring);
发现mPlayer为null,原因出在音频文件上。使用wav格式不行,换用mp3文件即可。
8.常用命令:
内存对齐优化命令:zipalign -v 4 <unaligned>.apk <aligned>.apk
创建AVD:
android create avd -n testavd -t 42 -c 70M -p c:\AVD -s 600x700 -b armeabi-v7a
参数详细:
-t --target 新的AVD的Target ID(必须);
-c --sdcard 指向一个共享的SD存储卡的路径或者是为新的AVD定制的新的SD存储卡的容量大小.如:-t 50M.("M"必须大写)
-p --path 新AVD将被创建的位置路径.
-n --name新AVD的名字(必须)
-f --force 强制创建(覆盖已存在的AVD)
-s --skin 新AVD的皮肤.
-b --abi :The ABI to use for the AVD.The default is to auto-select the ABI if the platform has only one ABI for its system images.例如:android-17里面的abi有armeabi-v7a,和mips,还有x86,共三个.此时就需要用这个参数指定abi.如果只有一个abi,则不需要指定这个参数。
9.代码混淆:
修改project.properties,文件末尾加上:
# Project target.
target=android-8
proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt
10.Bitmap 改变像素颜色:
public Bitmap newBitm