Android开发软著 前期开发说明的问题

android开发中遇到的问题汇总【三】
在EditText中插入表情图片 (CharacterStyle&SpannableString)
EditText通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?
记得android中有个android.text包,这里提供了对文本的强大的处理功能。
添加图片主要用SpannableString和ImageSpan类:
Drawable drawable = getResources().getDrawable(id);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
//需要处理的文本,[smile]是需要被替代的文本
SpannableString spannable = new SpannableString(getText().toString()+"[smile]");
//要让图片替代指定的文字就要用ImageSpan
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
//开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)
//最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12
spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
setText(spannable);
60.viewpager中嵌套gridview
自定义带表情键盘
android 表情,软键盘冲突解决方案(仿微博等SNS应用)
android中ViewPager嵌套GridView引发的一系列UI卡顿不顺畅的问题
Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动
ViewPager+GridView实现宫格横向滑动切换
61.异常:java.lang.ClassCastException: android.view.ViewGroupLayoutParamscannotbecasttoandroid.view.ViewGroupMarginLayoutParams的终极解决方式
思路:从原来的View中直接获取LayoutParams。http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/91.html
62.android4.0的edittext屏蔽输入法时候光标显示问题
通过反射解决
if (android.os.Build.VERSION.SDK_INT &= 10) {
mEditText.setInputType(InputType.TYPE_NULL);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Class cls = EditText.
Method setSoftInputShownOnF
setSoftInputShownOnFocus = cls.getMethod(“setSoftInputShownOnFocus”, boolean.class);
setSoftInputShownOnFocus.setAccessible(true);
setSoftInputShownOnFocus.invoke(mEditText, false);
} catch (Exception e) {
e.printStackTrace();
Class cls = EditText.
Method setShowSoftInputOnF
setShowSoftInputOnFocus = cls.getMethod(“setShowSoftInputOnFocus”, boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(mEditText, false);
} catch (Exception e) {
e.printStackTrace();
63.自定义控件
getContext的使用
自定义android用户控件,使用回调函数实现自定义事件
64.如何获取到,EditView 的 粘贴复制呢(解决)
重写editview控件,onTextContextMenuItem
Android学习笔记之通过剪切板传递数据
Android EditText 取消复制粘贴剪贴功能
在API-11以上,也就是Android 3.0以上的版本,这个操作就无效了,需要用到以下方法:
editText.setCustomSelectionActionModeCallback(new ActionMode.Callback()
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
如何捕获Edittext的粘贴方法?
向EditView插入qq表情,并可删除表情或文字 android开发教程
65.android EditText插入字符串到光标所在位置
EditText mTextInput=(EditText)findViewById(R.id.input);//EditText对象
int index = mTextInput.getSelectionStart();//获取光标所在位置
String text="I want to input str";
Editable edit = mTextInput.getEditableText();//获取EditText的文字
if (index & 0 || index &= edit.length() ){
edit.append(text);
edit.insert(index,text);//光标所在位置插入文字
66.Android学习笔记:浅析自己的聊天系统的设计思想
67.java 正则表达式(Invalid escape sequence (valid ones are \b \t \n \f \r \” \’ \ ) 请问是啥原因呢?
把你的里面的\全部替换为\即可
68.lineralayou 中的一个view需要指定在底部,只需要把其他的view的weight设为1即可
NewsCommentDetailActivity
01-20 11:35:28.990: E/AndroidRuntime(6166): java.lang.RuntimeException: Unable to instantiate application com.jetsun.hbfc.core.MyApplication: java.lang.NullPointerException
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.LoadedApk.makeApplication(LoadedApk.java:508)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4245)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.ActivityThread.access1400(ActivityThread.java:131)01-2011:35:28.990:E/AndroidRuntime(6166):atandroid.app.ActivityThreadH.handleMessage(ActivityThread.java:1288)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.os.Handler.dispatchMessage(Handler.java:99)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.os.Looper.loop(Looper.java:137)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.ActivityThread.main(ActivityThread.java:4866)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at java.lang.reflect.Method.invokeNative(Native Method)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at java.lang.reflect.Method.invoke(Method.java:511)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at dalvik.system.NativeStart.main(Native Method)
01-20 11:35:28.990: E/AndroidRuntime(6166): Caused by: java.lang.NullPointerException
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:384)
01-20 11:35:28.990: E/AndroidRuntime(6166):
at android.app.LoadedApk.getClassLoader(LoadedApk.java:327)
01-20 04:05:16.637: E/AndroidRuntime(1372): Process: com.jetsun.hbfc:webview, PID: 1372
01-20 04:05:16.637: E/AndroidRuntime(1372): java.lang.RuntimeException: Unable to instantiate application com.jetsun.hbfc.core.MyApplication: java.lang.IllegalStateException: Unable to get package info for com.jetsun. is package not installed?
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.LoadedApk.makeApplication(LoadedApk.java:561)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4491)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.ActivityThread.access1500(ActivityThread.java:144)01-2004:05:16.637:E/AndroidRuntime(1372):atandroid.app.ActivityThreadH.handleMessage(ActivityThread.java:1339)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.os.Handler.dispatchMessage(Handler.java:102)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.os.Looper.loop(Looper.java:135)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.ActivityThread.main(ActivityThread.java:5221)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at java.lang.reflect.Method.invoke(Native Method)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at java.lang.reflect.Method.invoke(Method.java:372)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
01-20 04:05:16.637: E/AndroidRuntime(1372): Caused by: java.lang.IllegalStateException: Unable to get package info for com.jetsun. is package not installed?
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:410)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.LoadedApk.getClassLoader(LoadedApk.java:363)
01-20 04:05:16.637: E/AndroidRuntime(1372):
at android.app.LoadedApk.makeApplication(LoadedApk.java:554)
70.解决eclipse闪退的办法
方法1.最好解决办法:
删除文件 [workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
方法2.在文件eclipse/configuration/config.ini末尾加上如下一行:
org.eclipse.swt.browser.DefaultType=mozilla
71.Android WebView的前进、后退、与刷新
mWebView.goBack();
mWebView.goForward();//前进
mWebView.reload();
72.You must call removeView() on the child’s parent first
在做alertdialog是的时候报了这么一个错误:
java.lang.IllegalStateException:
The specified child already has a parent.
You must call removeView() on the child's parent first.
搞了许久,终于理解了。
et1 = (EditText)findViewById(R.id.editText1);
builder.setView(et1);
-- AlertDialog.Builder builder
et1我写在了xml里面,这样报错,原因是一女不可二嫁。
et1的parent即是R.layout.main 又是AlertDialog。
自然就报错了要你removeView()了。
解决方法有两种
1.动态生成EditText
et1 = new EditText(this);
builder.setView(et1);
2. 放在另一个xml中,用inflater
LayoutInflater inflater = LayoutInflater.from(this);
View textEntryView = inflater.inflate(R.layout.test1, null);
et1 = (EditText)textEntryView.findViewById(R.id.editText1);
builder.setView(textEntryView ); 注意这里是textEntryView ,不是et1
Activity切换动画无效(android:windowIsTranslucent)影响(android:windowAnimationStyle)
style里面设置了android:windowIsTranslucent这个属性
Android 解决程序启动时的黑屏问题
android 界面切换黑屏处理从A切换到B的过程中出现黑屏,可以在Manifest文件中改变B的theme,在theme里添加true,这样从A到B的过程中,因为B是透明的,所以背景就是A。这样的用户体验比较好
atvity主题加透明属性 如下: true
在该atvtivity中使用webview。
webview中有videos,可以播放视频,点击视频全屏后,导致其上级fragmentactivity重新加载,导致内容空白。
76.打包过程中出现错误
Unexpected error while computing stack sizes:
java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [12] invokevirtual #96 in [cn/jpush/android/a/a.()V])
解决办法: 如何在代码时混淆忽略 jpush-sdk-release.jar?
请下载最新的proguard.jar,
umeng官方最新的试了也是有问题,估计兼容型的不好吧,采用http://download.csdn.net/detail/msn5061这个 ok。
并替换你Android Sdk "tools\proguard\lib\proguard.jar"
在你的proguard.cfg加上代码:
cn.jpush.**
-keep class cn.jpush.** { *; }
77.android eclipse设置的断点无效的解决方案
1.排除 Run——Skip All Breakpoints
2.排除断点无效的activity所在的进程是否是主进程。
78.极光推送富媒体
推送富媒体时,推送模版其实是通知,推送文件其实是自定义消息类型
通知 vs. 自定义消息
富文本页面 Javascript 回调API
Rich Push 开发指南
79.内部跳转
Routable for Android
80.fjrefox
firebug插件。chrome 自身F12都可以方便的查看并且编辑html
81 带有凭证的activity 必须在一个进程中。否则凭证会为空。还有一点在调试的时候,非主进程无法和主进程跳转调试。
82.apktool反编译过程中出现如下错误
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:491)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66)
at brut.androlib.Androlib.getResTable(Androlib.java:50)
at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:189)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x
at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:44)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:102)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:83)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
... 8 more
由于使用新的adt,而反编译的apktool.jar不是最新的导致。使用新的apktool.jar替换原来的就可以了。官方下载地址 。
83.渠道打包工具
需要翻墙。部分需要付费
使用Vitamio打造自己的Android万能播放器
Ctrl+Shift+F7 可以高亮当前元素在当前文件中的使用
Android Studio 如何提示函数用法?
先选中,然后按F2
android 提供的很多List控件如 listview、gridview 默认都会显示一个fadingedge的东西,它在View的top和bottom处各显示一个渐变半透的阴影以达到更好的视觉效果,但是这个带来的副作用就是导致在性能不是那么强劲的机器上,一些listview,gridview的拖动会显得很不流畅,因为我们知道绘制带Alpha的图片是最耗时的。
我们的优化思路就是对这个fadingedge做一些修改,当view处于滚动状态时,通过接口setVerticalFadingEdgeEnabled(false)让其不显示fadingedge,当view处于静止状态时,通过接口setVerticalFadingEdgeEnabled(true)恢复显示fadingedge。以上的listview和gridview等控件都是继承与AbsListView,所以我们直接修改framework中的AbsListView.java文件,就可以达到系统级的改动效果了。
从github上clone下来swipebacklayout
编译报错查看log为 android-studio llij.ide.plugins.PluginManager - null
tasks.withType(Compile) { options.encoding = “UTF-8” }
tasks.withType(JavaCompile) { options.encoding = “UTF-8” }
Error:Execution failed for task ‘:hBFC:compileDebugNdk’.
NDK not configured.
Download the NDK from
add ndk.dir=path/to/ndk in local.properties.
(On Windows, make sure you escape backslashes, e.g. C:\ndk rather than C:\ndk)
90.Error:(8, 0) Could not find property ‘ANDROID_BUILD_SDK_VERSION’ on project ‘:ActionBar-PullToRefresh’.
dependencies {
compile ‘com.github.castorflex.smoothprogressbar:library:0.4.+@aar’
I think you should also import ‘SmoothProgressBar’ library in your project
。@+id:宣告一個id值來識別控制項
。@id:透過id值引用控制項
。android:id:透過id值, 引用Android系統內部的資源
。?android:attr:引用Android預置定義樣式
更多问题请关注
没有更多推荐了,ul').hide()" onmouseenter="jQuery('.sitegroup>ul').show()">
立即充值>
做任务去>
请完成以下验证码
看完花絮别忘了还有:6.30【长沙站】现场资源分享安卓巴士全球开发者论坛2018年——长沙站线下技术沙龙在上周六圆满结 ... 安卓巴士全球开发者论坛【长沙站】已完美落幕,以下是各个嘉宾的PPT分享供各位巴友下载学习再次感谢四位讲师 ... 安卓巴士 安卓巴士
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android技术博客
Android源码推荐
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android综合讨论
Android 代码下载
今日: 523|帖子: 3023368|会员: 862763|欢迎新会员:
分区版主: ,
主题: 3557, 帖数: <span title="万
主题: 5221, 帖数: <span title="万
主题: 83, 帖数: 1603
主题: 3万, 帖数: <span title="万
主题: 4886, 帖数: 4951
主题: 129, 帖数: 7万
主题: 889, 帖数: <span title="万
主题: 7808, 帖数: <span title="万
昨天&22:27
主题: 48, 帖数: 55
主题: 7283, 帖数: <span title="万
主题: 1671, 帖数: 9万
昨天&15:29
分区版主: ,
主题: 3229, 帖数: 2万
昨天&16:48
主题: 103, 帖数: 3786
昨天&15:04
主题: 1308, 帖数: <span title="万
主题: 89, 帖数: 397
主题: 2186, 帖数: 1万
分区版主: , ,
主题: 439, 帖数: 3万
主题: 48, 帖数: 168
分区版主: ,
主题: 40, 帖数: 726
昨天&09:22
&&&最高记录是 - . 总计
通过邮件订阅最新安卓weekly信息
下载安卓巴士客户端
全国最大的安卓开发者社区
小编刚刚整理一份优质全面的Android技术博客精华汇总,整合最全Android技术不容错过,快来看看吧~
技术GG还在愁如何赚安币?不要说我没有告诉你们攻略哦~
安卓巴士每月都会举行博文大赛,第三期精彩博文集锦,大家快来观摩!
过往热门资讯,优质博文与源码汇集于此,徜徉其中,总会有所收获...
合作电话:
商务市场合作/投稿
问题反馈及帮助android开发中遇到的问题汇总【九】
时间: 20:48:16
&&&& 阅读:713
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
244.http请求的url含有中字符时。须要Uri编码。Uri.encoder()
245.使用androidstudio时,不知道什么原因svn不见了
Please make sure that the “SubversionIntegration” plugin is enabled in Preferences & Plugins
246.Error:Execution failed for task ‘:app:dexDebug’.& com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘/home/xxx/tools/android/jdk1.7.0_71/bin/java” finished with non-zero exit value 2
检查下是否多次引用同一个jar包
1. module下jar包版本号不同
同一个module 在libs中包括乐.jar,而在src下又把相应的source页加入了
gradle中是否反复编译,
已经加了compile fileTree(include: [‘*.jar’], dir: ‘libs’)
然而在以下又加一句compile files(‘libs/xxx.jar’)
246.android handler的警告Handler Class Should be Static or Leaks Occur
在使用Handler更新UI的时候public class SampleActivity extends Activity {
private final Handler mLeakyHandler = new Handler() {
public void handleMessage(Message msg) {
}会包上述warning 会导致内存泄露
原因在于匿名内部类handler持有activity的引用。当activity finish后 handler还没有处理完。导致activity的view和resource资源不能得到释放。导致内存泄露
针对这个问题google官方给出了正确的做法
通过静态内部类 包括activity的弱引用来处理。
public class SampleActivity extends Activity {
* Instances of static inner classes do not hold an implicit
* reference to their outer class.
private static class MyHandler extends Handler {
private final WeakReference mA
public MyHandler(SampleActivity activity) {
mActivity = new WeakReference&SampleActivity&(activity);
public void handleMessage(Message msg) {
SampleActivity activity = mActivity.get();
if (activity != null) {
private final MyHandler mHandler = new MyHandler(this);
* Instances of anonymous classes do not hold an implicit
* reference to their outer class when they are “static”.
private static final Runnable sRunnable = new Runnable() {
public void run() { }
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Post a message and delay its execution for 10 minutes.
mHandler.postDelayed(sRunnable, 60 * 10 * 1000);
// Go back to the previous Activity.
247.androidstudio不同tab切换
248.androidstudio 怎样自己主动import用到的类或接口?
For Windows/Linux, you can go to File -& Settings -& Editor -& General -& Auto Import -& Java and make the following changes:
change Insert imports on paste value to All
markAdd unambigious imports on the fly option as checked
On a Mac, do the same thing in Android Studio -& Preferences
249.Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/home/cenuser/android/android-ndk-r7b/build/core/build-local.mk:130: *** Android NDK: Aborting
cd到jni目录。或者 ndk-build -C your_project_path
250 .Why do I want to avoid non-default constructors in fragments?
fragment设置參数正确的做法
Make a bundle object and insert your data (in this example your Category object). Be careful, you can‘t pass this object directly into the bundle, unless it‘s serializable. I think it‘s better to build your object in the fragment, and put only an id or something else into bundle. This is the code to create and attach a bundle:
Bundle args = new Bundle();
args.putLong("key", value);
yourFragment.setArguments(args);
After that, in your fragment access data:
Type value = getArguments().getType("key");
That‘s all.
251. ubuntu下删除.svn的方法
find -type d -name ‘.svn‘ -exec rm -rfv {} \;
參考 http://blog.csdn.net/zhaoyu7777777/article/details/9445717
252. Fatal : Could not read from remote repository.
git配置使用,已经把公钥发给发给服务端,在终端命令行也是能够正常的pull push,可是在androidstudio push或者pull的时候确出现上述错误
setting –& Version Control –&Git ,In the SSH executable dropdown, choose Native
253. ubuntu获取证书指纹的命令
keytool -list -keystore xxx.keystore
eg:查看debug.keystore
keytool -list -keystore ~/.android/debug.keystore
254. mac 命令行安装软件
通过brew安装。相当于ubuntu中得apt-get
首先安装brew
curl -LsSf
| sudo tar xvz -C/usr/local –strip 1
然后就能够使用brew安装软件了
比方 使用brew安装软件
brew install wget
255.代码混淆时 报例如以下错误 Error:Execution failed for task ‘:app:proguarxxxRelease’.
java.io.IOException: Can’t read [/libs/xxx.jar] (No such file or directory)
proguard-android.txt文件里不用在指定 -injars, -outjars, or -libraryjars
The Android Gradle plugin already specifies all input and output for you, so you must not specify -injars, -outjars, or -libraryjars.
Moreover, the file proguard-android.txt in the Android SDK specifies all generic Android settings for you, so you shouldn’t specify them again.
Essentially, your file proguard-rules.txt can be empty, except for any application-specific settings to make sure any reflection continues to work
256.Android中怎样设置RadioButton在文字的右边,图标在左边
android:button=”@null”这条语句将原来系统的RadioButton图标给隐藏起来。
android:drawableRight=”@android:drawable/btn_radio”这条语句
257.java报“非法字符: \65279 ”错误的解决方法
众所周知。在跨程序的工程中。统一编码是至关重要的。而眼下最普遍的则是统一採用“utf8”编码方案。
可是在採用utf8方案的时候,请注意编辑器的自作聪明。
比方editplus。
原因就在于某些编辑器会往utf8文件里加入utf8标记(editplus称其为签名),它会在文件開始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),它的表示的是 Unicode 标记(BOM)。
258.手机root后 还会出现下述情况Android: adb: copy file to /system (Permission denied)
解决方案。须要remount /system
mount -o remount,rw /system
259.androidstudio 手动加入assets文件 路径在哪
XXX\src\main\assets
260.android双击back退出
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = Toast.makeText(getApplicationContext(), "确定退出?", 0);
public void onBackPressed() {
quitToast();
private void quitToast() {
if(null == toast.getView().getParent()){
toast.show();
System.exit(0);
protected void onCreate(Bundle savedInstanceState) {
toast = Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM, 0, ConversionUtil.dip2px(this, 150));
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
if(toast!=null){
toast.cancel();
super.onBackPressed();
this.doubleBackToExitPressedOnce = true;
toast.show();
new Handler().postDelayed(new Runnable() {
public void run() {
doubleBackToExitPressedOnce=false;
261.anroid几个非常不错的快捷键
Ctrl+Shift+Alt+T 重构代码 change name
水平分屏显示【须要在keymap中搜索split 设置move right的快捷键】
shift+alt+L
ctrl+shift+v
262.在旧项目中引入android materialdesign 时 出现例如以下问题
android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.internal.NavigationMenuView
Caused by: java.lang.reflect.InvocationTargetException
Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f0100c5 a=-1}
You need to use a Theme.AppCompat theme (or descendant) with this activity.
解决方法 :使用NavigationMenuView的Activity【一般都是mainActivity】继承自AppCompatActivity,并且改动AndroidManifest.xml中相应activity的theme,使用继承自@style/Theme.AppCompat的主题。
262.How to get key and value of HashMap in java
public class AccessKeyValueOfHashMap {
public static void main(String[] args) {
HashMap&String, String& obHashMap = new HashMap&String, String&();
obHashMap.put("AB", "1");
obHashMap.put("EF", "2");
obHashMap.put("Gh", "3");
obHashMap.put("CD", "4");
Set mapSet = (Set) obHashMap.entrySet();
Iterator mapIterator = mapSet.iterator();
System.out.println("Display the key/value of HashMap.");
while (mapIterator.hasNext()) {
Map.Entry mapEntry = (Map.Entry) mapIterator.next();
String keyValue = (String) mapEntry.getKey();
String value = (String) mapEntry.getValue();
System.out.println("Key : " + keyValue + "= Value : " + value);
263. 设置键盘回车为发送建
android:imeOptions="actionSend"
android:inputType="text"
264. editText 取消背景格式 取消下划线等自带样式
去掉下划线仅仅需把背景设置成为“@null”,
假设想设为其它样式也是设置背景
265. How to build an .so binary for a device with a 64-bit CPU?
latest version of the NDK (right now it‘s r10e)
Application.mk
APP_ABI := armeabi arm64-v8a armeabi-v7a x86 mips
266. Android NDK for x86_64 has no reference for bcopy and index
You can fix this cleanly with a single line in Application.mk (docs):
APP_CFLAGS += -DSTDC_HEADERS
267.Error:Execution failed for task ‘:xxx:processDebugManifest’. & Manifest merger failed : uses-sdk element cannot have a “tools:node” attribute
This has been updated to reflect the release of API 21, Lollipop. Be sure to download the latest SDK.
In one of my modules I had the following in build.gradle:
dependencies {
compile ‘com.android.support:support-v4:+‘
Changing this to
dependencies {
compile ‘com.android.support:support-v4:21.0.0‘
fixed the issue.
268.Error:(1, 1) A problem occurred evaluating project ‘xxx’. & Could not create plugin of type ‘LibraryPlugin’.
改动了build.gradle中的gradle
也要改动gradle-wrapper.properties
build.gradle
dependencies {
classpath ‘com.android.tools.build:gradle:1.2.3‘
gradle-wrapper.properties
distributionUrl=https\:
269.androidstudio
Building Apps with Over 65K Methods
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
dependencies {
compile ‘com.android.support:multidex:1.0.0‘
270.Caused by: java.lang.NoClassDefFoundError: android.support.v4.util.Pools$SimplePool
271.Caused by: java.lang.NoSuchMethodException:
[class android.content.Context, interface android.util.AttributeSet]
272.java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{423a4c60 position=4 id=-1, oldPos=1, pLpos:1 scrap tmpDetached not recyclable(1) no parent}
273.Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
I was having this error because i had capital letters in my package name like this
Com.Example.packagename
after i had changed it to something like
com.example.packagename
it was solved
273.解决异常Circular dependencies cannot exist in RelativeLayout
RelativeLayout中存在循环的相关
274.java.lang.ClassNotFoundException
使用MultiDex 后,执行时发现有些crash或者有些类无法调用 报NoClassDefFound error
首先正确使用 google的multipartdex
改动Gradle,导入’com.android.support:multidex:1.0.0’,打开multiDexE
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
dependencies {
compile ‘com.android.support:multidex:1.0.0‘
改动Application.两种方法:
1) 直接把Application替换成MultiDexApplication
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication"&
&application
android:name="android.support.multidex.MultiDexApplication"&
&/application&
&/manifest&
2) 在原来的Application中改动调用MultiDex.install(this);
public class HelloMultiDexApplication extends Application {
public void onCreate() {
super.onCreate();
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
假设做了上面处理,依然NoClassDefFound error
通过例如以下方式处理:
一些在二级Dex载入之前,可能会被调用到的类(比方静态变量的类),须要放在主Dex中.否则会ClassNotFoundError.
通过改动Gradle,能够显式的把一些类放在Main Dex中.
275.Linux 32 Bit Libraries
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1
276.Android Material Design TabLayout.when more than screen width scroll when less than screen width fill
Android TabLayout,当tab总宽度少于一屏时候,扩展为屏幕宽度展示.当tab总宽度大于一屏时,滚动显示
Tab gravity only effects MODE_FIXED.
One possible solution is to set your layout_width to wrap_content and layout_gravity to center_horizontal:
&android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:tabMode="scrollable" /&
If the tabs are smaller than the screen width, the TabLayout itself will also be smaller and it will be centered because of the gravity. If the tabs are bigger than the screen width, the TabLayout will match the screen width and scrolling will activate.
277. android多渠道打包
眼下採用的方案是,在AndroidManifest.xml文件里配置
&meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" /&
在app的build.gradle文件里配置
productFlavors {
wandoujia {}
yingyongbao{}
productFlavors.all {
flavor -& flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
这样编译时会生成相应的渠道包apk.如今问题来了。假设有几十个渠道,会生成相应几十个apk包.打包编译一个apk一般须要1分钟左右(和电脑配置有关).那么打包几十个要几十分钟的时间.确实挺费时间的.那么有没有好的方式呐?
当然是有的
我们能够採用例如以下方案处理.通过文件配置仅仅须要生成一个apk包
此种方法是须要创建文件的。
我们在写完我们的代码之后。在app/src以下。分别创建和main同级目录的目录umeng, wandoujia, yingyongbao,这三个目录里面都各仅仅有一个AndroidManifest.xml文件,文件仅仅须要例如以下:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
&manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name"&
&application&
&meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/&
&/application&
&/manifest&
注意。上面的value的值要和你的渠道名所相应。比方wandoujia里面要相应为你豌豆荚上的渠道名(如WANDOUJAI)。
然后在你的build.gradle的android{}节点里面,加入productFlavors节点,代码例如以下:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
productFlavors{
wandoujai {
yingyongbao{
注意这里的flavors的名字要和你的目录的名字相应。这样配置之后。构建的就是多渠道的APK了。
278 Tcpdump抓包
有些模拟器比方genymotion自带了tcpdump。假设没有的话,须要下载tcpdump:
把tcpdump push到/data/local下,抓包命令:
279 查看签名
非常多开发人员服务都须要绑定签名信息,用以下的命令能够查看签名:
keytool -list -v -keystore release.jks
281 一行居中。多行居左的TextView
这个一般用于提示信息对话框。假设文字是一行就居中。多行就居左。
在TextView外套一层wrap_content的ViewGroup就可以简单实现:
282 setCompoundDrawablesWithIntrinsicBounds()
网上一大堆setCompoundDrawables()方法无效不显示的问题。然后解决方法是setBounds。须要计算大小…
不用这么麻烦,用setCompoundDrawablesWithIntrinsicBounds()这种方法最简单!
282 更新媒体库文件
曾经做ROM的时候经常碰到一些第三方软件(某音乐APP)下载了新文件或删除文件之后。可是媒体库并没有更新,由于这个是须要第三方软件主动触发。
283 Monkey參数
大家都知道,跑monkey的參数设置有一些要注意的地方,比方太快了不行不切实际,太慢了也不行等等,这里给出一个參考:
一边跑monkey。一遍抓log吧。
284 强大的dumpsys
dumpsys能够查看系统服务和状态,非常强大。可通过例如以下查看全部支持的子命令:
这里列举几个略微经常使用的:
媒体库会在手机启动。SD卡插拔的情况下进行全盘扫描,不是实时的并且代价比較大,所以单个文件的刷新非常有必要。
注[278-284来源于] 
你应该知道的那些Android小经验
285. 在布局文件时。在xml可视化文件里看到效果,而又不影响终于展示.能够通过tools来协助
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"&
&ProgressBar
android:id="@+id/progress_loading"
android:layout_width="75dp"
android:layout_height="60dp"/&
android:id="@+id/tv_reload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:src="@drawable/refresh_big"
android:scaleType="centerInside"
android:visibility="gone"
tools:text="点我,又一次载入"
tools:visibility="visible"/&
&/RelativeLayout&
加填充xml文件时。TextView是隐藏的,但又想在xml中直观的看到它显示后的总体效果.借助xmlns:tools=”http://schemas.android.com/tools” 完美实现.
286. android studio对于错误拼写/不识别的英文单词,给予波浪提示。
Spellchecker inspection helps locate typos and misspelling in your code, comments and literals, and fix them in one click
选中单词。单击鼠标右键 spelling
Save ‘xxx’ to dictionary..
287. Warning: Use ‘′insteadof′.′forinnerclasses(oruseonlylowercaselettersinpackagenames);replace.with
Package names are written in all lower case to avoid conflict with the names of classes or interfaces.
包名小写,避免和类名或接口名冲突
288. JNI undefined reference to `__android_log_print’
defaultConfig {
moduleName "your_module_name"
ldLibs "log"
很多其它问题请关注
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/liguangsunls/p/7270290.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 软著合作开发协议 的文章

 

随机推荐