android模拟器,Genymotion问题:Unable to start the virtual device。原因可能是电脑系统主题被破解过,恢复破解的主题即可
Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验. 只需要两行代码, 就可以实现换肤, 你值得拥有!!!
加速Gradle的构建
# 在gradle.properties文件最下面添加以下语句
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
android.useDeprecatedNdk=true
org.gradle.daemon=true
Android studio 亲测实用插件:
插件的一般使用方式:在类中,按下alt + insert键弹出插入代码的上下文菜单选中即可- .ignore :我 们都知道在Git 中想要过滤掉一些不想提交的文件,可以把相应的文件添加到.gitignore 中, 而.gitignore 这个Android Studio 插件根据不同的语言来选择模板,就不用自己在费事添加一些文件了,而且还有自动补全功能,过滤文件再也不要复制文件名了。我们做项目的时候,并不是所有文 件都是要提交的,比如构建的build 文件夹,本地配置文件,每个Module 生成的iml 文件,但是我们每次add,commit 都会不小心把它们添加上去,而gitignore 就是解决这种痛点的,如果你不想提交的文件,就可以在创建项目的时候将这个文件中添加即可,将一些通用的东西屏蔽掉。
- Android Parcelable code generator:这个是生成实现了Parcelable接口的代码的插件
- Genymotion:速度较快的android模拟器
- GsonFormat:快速将json字符串转换成一个Java Bean
- CodeGlance:用于快速定位代码
- Android Butterknife Zelezny :配合ButterKnife实现注解,从此不用写findViewById,在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解
- Translation 或者 ECTranslation:Android Studio 翻译插件,可以将英文翻译为中文。
- eventbus3 intellij plugin:eventbus3.X导航插件
- Sexy Editor:设置AS代码编辑区的背景图插件
- Android Studio Prettify:可以将代码中的字符串写在string.xml文件中,选中字符串鼠标右键选择->Extract String Resource,这个插件还可以自动书写findViewById。
- CheckStyle-IDEA:CheckStyle-IDEA 是一个检查代码风格的插件,比如像命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,你们可以遵从像Google Oracle 的Java 代码指南 ,当然也可以按照自己的规则来设置配置文件,从而有效约束你自己更好地遵循代码编写规范。
- PermissionsDispatcher plugin:自动生成6.0权限的代码
- Android On-Device Resource Localization:可用于将项目中的 string 资源自动翻译为其他语言的 Android Studio/IntelliJ IDEA 插件
Android 复制文本内容到系统剪贴板
// 从API11开始android推荐使用android.content.ClipboardManager
// 为了兼容低版本我们这里使用旧版的android.text.ClipboardManager,虽然提示deprecated,但不影响使用。
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
// 将文本内容放到系统剪贴板里。
// cm.setText(要复制的文本内容); //此方法deprecated,或者使用下面这个方法
cm.setPrimaryClip(ClipData.newPlainText("标题",要复制的文本内容));
- Android 两种方式设置EditText不弹出软键盘
//1.设置焦点在其他控件上:
android:focusable="false "
android:focusableInTouchMode="false "
//2.设置activity不自动弹出软键盘:
// 在AndroidManifest.xml设置:
<activity android:name="需设置隐藏键盘的Activity"
android:windowSoftInputMode="stateHidden|stateAlwaysHidden" />
- Android RxJava+Retrofit 一次(合并)请求多个接口
使用RxJava的Merge操作符实现将两个接口Observable合成一个
// 一次(合并)请求多个接口
Observable<Object> merge = Observable.merge(mModel.getRechargeOrdre(mRechargeMoery, mRechargeType), mModel.getPayeeInfo());
//添加到订阅
addSubscription(merge.subscribe(new HttpSubscriber<Object>(new SubscriberResultListener() {
@Override
public void onSuccess(Object obj) {
// 根据返回的数据类型区分
if (obj instanceof RechargeOrdreBean){
mRechargeOrdreBean = (RechargeOrdreBean) obj;
}else if (obj instanceof PayeeInfoBean){
mView.showPayeeInfo((PayeeInfoBean) obj);
}
}
@Override
public void onError(HttpErrorException errorException) {
mView.showMsg(errorException.getMessage());
}
})));
- Android RxJava+Retrofit 一次(顺序,嵌套)请求多个接口
使用RxJava的flatMap操作符实现将两个接口Observable顺序,嵌套执行网络请求
// 添加到订阅
addSubscription(mModel.verifyPayPassword(payPassword)
// flatMap对Observable进行变换
// Object第一个请求返回的值,Observable<Object>第二个请求返回的Observable
.flatMap(new Func1<Object, Observable<Object>>() {
@Override
public Observable<Object> call(Object o) {
// 第一个请求成功则执行下一个请求,失败则直接调用onError方法
return mModel.userBindBankCard(body);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new HttpSubscriber<>(new SubscriberResultListener() {
@Override
public void onSuccess(Object o) {
// 成功Todo
}
@Override
public void onError(HttpErrorException errorException) {
// 失败Todo
}
})));
- Android中去除字符串中所有的空格
/*可以替换大部分空白字符, 不限于空格
\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个 */
str = str.replaceAll("\\s*", "");