序列化与反序列化
http://blog.csdn.net/yayun0516/article/details/46397811
ImageLoader
https://www.cnblogs.com/zhen-android/p/6906613.html
https://www.cnblogs.com/linghu-java/p/5741358.html
透明activity
<style name="Semitransparent" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:background">@color/semitransparent_color</item>
</style>
popupwindow增加动画
https://www.cnblogs.com/jzyhywxz/p/7039503.html
https://www.cnblogs.com/jzyhywxz/p/7039503.html
https://my.oschina.net/javaTechLover/blog/338640
@Override
public boolean onTouch(View v, MotionEvent event) {
float posY = 0;
float curPosY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
posY = event.getY();
Log.i("down","下滑"+posY);
break;
case MotionEvent.ACTION_MOVE:
curPosY = event.getY();
break;
case MotionEvent.ACTION_UP:
if (curPosY - posY > 0
&& (Math.abs(curPosY - posY) > 100)) {
//向下滑動
Log.i("downdistance","下滑"+Math.abs(curPosY - posY));
}
break;
}
return true;
}
设置adjustViewBounds // 是否保持宽高比
<ImageView
android:id="@+id/iv_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
/>
首先,需要给你的ImageView布局加上android:adjustViewBounds="true"
<ImageView android:id="@+id/test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher" />
https://blog.csdn.net/chenqian_deyouxiang/article/details/46840929
开发规范
https://coding.net/t/heyemoji/p/huiteng-doc/topic/364650
点击变色
https://blog.csdn.net/u013278940/article/details/51152655
点9图的制作及其含义
https://blog.csdn.net/Fredlxy_007/article/details/72600767
APK包瘦身,性能优化
Lint工具
https://blog.csdn.net/u011240877/article/details/54141714
具体实现
defaultConfig提供了resConfig这个flavor来指定打包出只打包某些资源,比如字串、图片等等
例如下面的代码就只保留了中文和英文的语言资源:
defaultConfig {
resConfigs "zh","en"
}
so的优化
defaultConfig {
... ...
ndk {
//设置支持的SO库架构
abiFilters 'arm64-v8a', 'armeabi' //, 'x86', , 'x86_64', 'arm64-v8a'
}
}
动态加载技术(插件化)
性能优化
内存泄漏
http://www.cnblogs.com/soaringEveryday/p/5035366.html
反编译
当前的反编译方式
https://www.jianshu.com/p/133702f2adff
https://www.jianshu.com/p/c90024f61653
项目收集
一款阅读器
https://www.jianshu.com/p/a670fa9a5f1d?utm_source=desktop&utm_medium=timeline
掘金精选
https://www.jianshu.com/p/5ad013eb5364
Gradle
stormzhang基础
https://www.zhihu.com/question/30432152
使用指南
https://blog.csdn.net/heqiangflytosky/article/details/50853268
gradle完整指南
https://www.jianshu.com/p/9df3c3b6067a
https://blog.csdn.net/yujihu989/article/details/54589684
Gradle常用命令
上面大家接触了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 这里注意是./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在9GAG/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。
理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。
./gradlew -v 版本号
./gradlew clean 清除9GAG/app目录下的build文件夹
./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
除此之外,assemble还可以和productFlavors结合使用,具体在下一篇多渠道打包进一步解释。
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包
下一篇来介绍用Gradle进行方便的多渠道打包,以及项目中完整的Gradle配置。有问题或建议欢迎大家直接博客留言
gradle完整指南笔记
顶层的build.gradle文件的配置最终会被应用到所有项目中。
buildscript:定义了 Android 编译工具的类路径。repositories中,jCenter是一个著名的 Maven 仓库。
allprojects:中定义的属性会被应用到所有 module 中,但是为了保证每个项目的独立性,我们一般不会在这里面操作太多共有的东西。
每个项目单独的 build.gradle:针对每个module 的配置,如果这里的定义的选项和顶层build.gradle定义的相同,后者会被覆盖。典型的 配置内容如下