Mako Shan

Mako 是一名密码朋克爱好者
这里是我记录生活和成长的地方

联系我的微信号
👏欢迎一起交流学习

NavigationView addHeader问题

今天兴高彩烈的把 Material Design 支持库 (com.android.support:design)更新到最新版本23.1.1,结果悲剧发生了, findViewById()获取HeaderLayout中的控件报错,支持库中的NavigationView添加Header方便的在xml直接添加app:headerLayout="@layout/header_layout"就好,但是在新版23.1.0开始NavigationView 内部实现使用RecyclerView 代替 ListView ,这意味着RecyclerView 跟ListView添加header......

14

Android Studio 2.0 新特性Instant Run,代码变动 一秒钟生效

今天更新到Android Studio 2.0 Preview 版,最吸引人的改变就是加入Instant Run,之前的Android 开发最烦人是就是编译过程,Android Studio 自带的虚拟机启动非常慢,每次编译也是非常慢。这次更新,虚拟机启动还是一样的慢,但是Instant Run可以快速的重启Activity ,让你的每次代码的改变快速的部署到手机上。

注意:

设置Android Studio 更新模式为Canary Channel,才可以更新到Android Studio 2.0 Preview

要升级 Gradle 版本

buildscript {

r......

17

AppCompat22新特性

构建一个可以跑在不同版本 Android 平台的软件,是非常复杂和耗时的。为了解决这个问题,Android 推出了 Android Support Library (安卓兼容包),让新的UI控件也可以跑在早期的 Android 版本。最近Android Support Library 更新到v22.1,这一版本主要AppCompat做了一些大的调整。

重构AppCompat

初期AppCompat只是让Actionbar兼容到API 7。在AppCompat 21版本中,加入主题色、Toolbar等功能。显然ActionBarActivity这个名字已经不在适用AppCompat。新版本......

12

使用Volley

Volley由Google在2013年开发者大会发布,旨在解决Android开发中复杂的联网操作。

Volley擅长执行用来显示UI的RPC操作, 例如获取搜索结果的数据。它轻松的整合了任何协议,并输出操作结果的数据,可以是raw strings,也可以是images,或者是JSON。通过提供内置你可能使用到得功能,Volley可以使得你免去重复编写样板代码,使你可以把关注点放在你的app的功能逻辑上。

Volley不适合用来下载大的数据文件。因为Volley会在解析的过程中保留持有所有的响应数据在内存中。对于下载大量的数据操作,请考虑使用DownloadManager。

 Vol......

13

Eclipse代码提示

设置:

打开Eclipse,然后“window”→“Preferences”

选择“java”,展开,“Editor”,选择“Content Assist”

选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项。其实就是指触发代码提示的就是“.”这个符号。

“Auto Activation triggers for java”这个选项,在“.”后加abcdefghijklmnopqrstuvwxyz字母,意思就是指遇到26个字母和.这些符号就触发代码提示功能了......

10

AS 应用打包代码混淆

出于公司代码的安全,进行代码混淆是很有必要的。在Android Studio的gradle的配置文件中开启代码混淆的功能

buildTypes {

release {

// 开启代码混淆

minifyEnabled true

// 混淆配置文件的位置

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

}

}

需要混淆的部分

18

Fragmeng的层级管理

Google推出新版Play Newsstand堪称Material Design的典范,最近动手自己模仿Newsstand,遇到莫名奇妙的问题,这个布局是在Activity中替换Fragment,但是同时Fragment内还嵌套Viewpager,第一层Fragment通过getSupportFragmentManager()或者getFragmentManager()获得Fragm......

11

Android应用程序中打开指定的豌豆荚下载页面

类似于打开Google Play的实现

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(playAppUrl));

browserIntent.setClassName("com.android.vending", "com.android.vending.AssetBrowserActivity");

browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

豌豆荚没有提供这种链接,只能使用:用market:// url,豌豆荚对这个页面做了手机浏览......

12

Gradle多渠道打包

我们公司应用后台开发使用Umeng的数据统计(没办法国内Umeng做的最好),最近应用开始在国内各个市场上线,不得不吐槽国内Android市场太多,而且还有坑,我们应用最先是在Google Play上线,每家应用市场为了充量会自己从Google Play上抓取应用,导致我们上传应用前还要先再一次的签名认领应用。废话说的太多了。因为需要统计每个平台的数据, 友盟渠道区分是通过在AndroidManifest.xml的实现的:

<meta-data android:value="UMENG_CHANNEL_VALUE" android:name="UMENG......

15