android开发过程中一些遇到的问题

it 专栏收录该内容
0 篇文章 0 订阅

记录android开发过程中遇到的问题。

1.在一个xml中能否使用同一个include多次

http://www.apkbus.com/android-104152-1-1.html

android中include标签的使用

http://blog.csdn.net/wangljgood/article/details/6556175

2. android button在 linerlayout中底部居中
button外的权重设为1.0

 
3.button shape
http://www.cnblogs.com/gzggyy/archive/2013/05/17/3083218.html

 
4. animation

 
  1. http: //www.eoeandroid.com/forum.php?mod=viewthread&tid=564
  2. http: //blog.csdn.net/feng88724/article/details/6318430
  3. http: //www.360doc.com/content/13/0102/22/6541311_257754535.shtml
  4. http: //blog.csdn.net/aminfo/article/details/7847761
  5. http: //blog.csdn.net/xsl1990/article/details/19125193
  6. http: //www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html
  7. http: //www.oschina.net/question/97118_34523
  8. http: //www.eoeandroid.com/thread-67329-1-1.html
6.imageview 按比例缩放

 
  1. android:scaleType是控制图片如何resized/moved来匹对ImageView的size。
  2. ImageView.ScaleType / android:scaleType值的意义区别:
  3. CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
  4. CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
  5. CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
  6. FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
  7. FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
  8. FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
  9. FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示
  10. MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

android如何获取时间差?

7.ImageLoader must be init with configuration before using 错误解决方法

imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));

8.java.lang.StackOverflowError

StackOverflow 这个问题一般是你的程序里头可能是有死循环或递归调用所产生的;

9.java.lang.ClassCastException: android.app.Application cannot be cast to MyApplication问题

出这个异常的原因是在项目中添加了新application类(public class Application extends android.app.Application)之后,没有在manifest.xml中添加该类的声明,所以编译器抛出异常: java.lang.ClassCastException: android.app.Application cannot be cast to android_serialport_api.sample.Application

解决方法,在manifest.xml中添加: [html] view plaincopy


 
  1. <application
  2. android:name= "xxx.MyApplication">
10. event.getAction();
11. Found both android-support-v4 and android-support-v13 in the dependency list.
12. 怎么关联android-support-v4源码

 
  1. 问题:使用viewpager或者fragmentActivity等一些v4包下的类,当我们按F3时无法查看到源码,这个时候就需要我们关联该源码,该源码的关联与android源码的关联不一样。
  2. 解决办法:
  3. 1、首先在工程的libs目录下创建一个配置文件:android-support-v4.jar.properties(建议这样)
  4. 2、查找自己安装的SDK的目录下的android-support-v4的src源码地址
  5. 本人的为:D:\eclipse\android-sdk\extras\android\compatibility\v4\src
  6. 3、编辑android-support-v4.jar.properties文件为:(注意是双斜杠)
  7. src = D:\\eclipse\\android-sdk\\extras\\android\\compatibility\\v4\\src
  8. 4、关闭自己的工程后再打开,此时进去选择ViewPager后F3就能看到源码了。
  9. 5、恭喜:android-support-v4 源码已经成功的关联上。

还有种方式,http://blog.csdn.net/leon90dm/article/details/8521939,没试。

上面是eclipse中的做法,在androidstudio中的使用更简单。

13.eclipse 修改设置Ctrl+Shift+F长度

 
  1. window的Preferences中的Java->Code Style->Formatter
  2. 到了这一步就是找到Ctrl+Shift+F的格式化模板了,这里不能直接修改。因为是eclipse默认的模板,是只读的。
  3. 我们可以 new 一个Formatter,然后点击edit就可以修改模板。
  4. 我修改模板主要就是修改那个Ctrl+Shift+F后,把我的代码换多行了。
  5. 修改选项卡中的Line Wrapping选项卡, 有一个Maximum line with80(默认);
  6. 这里默认是 80我们可以把它修改成 120的,那样不超过 120个字符就不会被换行了!
  7. 其他自己需要的格式都可以在这里面修改。当然你还可以导出你自定义的格式,导出的是xml格式的。以后在其他地方
  8. 还可以导入。这样就不用再自定义了。
14. android-develop 镜像路径[重点推荐]
http://androiddoc.qiniudn.com/

 

google,被和谐后,通过vpn或者访问上述镜像路径。

15.fragment Andriod开发技巧——Fragment的懒加载

一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个fragment的时候,它才去初始化呢?

答案就在Fragment里的setUserVisibleHint这个方法里 http://blog.csdn.net/maosidiaoxian/article/details/38300627

结合fragment的hide和show使用。

16.让多个Fragment 切换时不重新实例化

http://www.yrom.net/blog/2013/03/10/fragment-switch-not-restart/

17. 关于Android的GridView添加headerView

grid-with-header-list-adapter StickyGridHeaders/ http://www.eoeandroid.com/blog-696650-48907.html

18.Eclipse设置不格式化注释
Eclipse设置不格式化注释

 

  注释中写点带格式的文字,format后全乱了,解决办法如下:   Windows -> Preferces -> java -> Code Style -> Formatter -> Edit -> Comments   取消勾选“Enable Javadoc comment formatting”.

19.android-Ultra-Pull-To-Refresh
20.Linux动态gif图的录制

 
  1. byzanz
  2. byzanz的安装与使用
  3. Ubuntu下安装
  4. sudo add-apt-repository ppa:fossfreedom/byzanz
  5. sudo apt-get update sudo apt- get install byzanz
  6. 你可以通过如下命令来完成录制过程:
  7. byzanz- record -d 40 -x 0 -y 0 -w 400 -h 320 byzanz-demo.gif
  8. 其中:
  9. -d 40 为录制的时长为 40
  10. -x 0 录制区域的横坐标
  11. -y 0 录制区域的纵坐标,记住:屏幕右上角为原点( 0, 0
  12. -w 400 录制区域的宽度
  13. -h 320 录制区域的高度
  14. byzanz-demo.gif 保存的文件名
  15. 详细参数可通过byzanz- record --help查看。
  16. http://www.tuicool.com/articles/YFJrem
  17. 另外:windows下 GIF屏幕录像机 V2 .0
22. viewpage 无线循环

http://www.cnblogs.com/xinye/archive/2013/06/09/3129140.html

23.public void onPageScrollStateChanged(int arg0)

 
  1. 此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
  2. 当页面开始滑动的时候,三种状态的变化顺序为(1,2,0)
24.

在eclipse.ini文件中加入 -Dorg.eclipse.swt.browser.DefaultType=mozilla 然后clean一下就OK了 执行clean命令

26.viewpager实现画廊(一屏多个Fragment)效果
27.svn命令

通过指令添加文件,每次都到对应文件夹 svn add。这样如果需要add的文件不在一个文件夹时会很麻烦,通过下面的 --force 可以方便的添加。 $ svn add * --force http://developer.51cto.com/art/201005/201633.htm

当然现在studio集成乐svn git等代码管理工具,很方便,可以直接使用。

28.Array constants can only be used in initializers

 
  1. int CC [] ={ 1, 2, 3}; 数组定义并附初始值的时候,数组的长度就定了,长度是 3
  2. 而且数组重新赋值不能再像定义的时候那样
  3. 而要一个一个地更改
  4. CC[ 0]= 1;
  5. CC[ 1]= 2;
  6. CC[ 2]= 3;
  7. Array constants can only be used in initializers 好像是说数组不能用于初始化
29.android 插件化
30.scrollview在内容较少时也可以滚动
在XML为ScrollView添加属性android:overScrollMode="always"即可

 
31.gridview/listview 点击时 android默认背景是黄色的,如何去掉选中时的黄色背景

 
  1. 方法一,在控件被初始化的时候设置
  2. gridView.setSelector( new ColorDrawable(Color.TRANSPARENT));
  3. listView.setSelector( new ColorDrawable(Color.TRANSPARENT));
  4. 方法二,在布局文件中设置listSelector属性
  5. <GridView
  6. android:listSelector= "@android:color/transparent"
  7. android:numColumns= "auto_fit"
  8. android:columnWidth= "50dp"
  9. android:stretchMode= "spacingWidth"
  10. android:layout_weight= "1.0"
  11. android:layout_height= "0dip"
  12. android:layout_width= "match_parent"/>
  13. <ListView
  14. android:listSelector= "@android:color/transparent"
  15. android:layout_height= "match_parent"
  16. android:layout_width= "match_parent"/>
  17. 当然也可以定制化自己想要的效果。
  18. 推荐使用方法二,解耦逻辑代码与布局文件。

另外listview还有两个基础问题 问题1:


 
  1. listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
  2. 解决办法:
  3. xml中: android:scrollingCache= "false" 或者 android:cacheColorHint= "#00000000"
  4. 代码中: setScrollingCacheEnabled( false) 或者 setCacheColorHint( 0) 或者setCacheColorHint(Color.TRANSPARENT);
  5. 问题 2
  6. listview的上边和下边有黑色的阴影。
  7. 解决办法:
  8. xml中: android:fadingEdge= "none"
  9. 代码中:setFadingEdgeLength( 0);
32.ScrollView仅支持一个子项,报错ScrollView can host only one direct child

 
  1. 解决办法:
  2. 在ScrollView 中设LinearLayout为子项 ,将其它View放入LinearLayout。
33.viewpager 设置间距和缓存

viewPager.setOffscreenPageLimit(TOTAL_COUNT); viewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin));

34.一级缓存和二级缓存是什么意思??

静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。 RAM分两种, 一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。

有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的数据越多,系统不就越快了吗

缓存通常都是静态RAM,速度是非常的快,

但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍),

价格高(同容量的静态RAM是动态RAM的四倍),

由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为,

但是为了提高系统的性能和速度,我们必须要扩大缓存,

这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存,

这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,

我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。

一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。 通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了

35.性能优化:使用SparseArray代替HashMap<Integer,Object>

http://blog.csdn.net/haukey/article/details/8200404

36.代码规范

http://liuzhichao.com/p/1781.html#more-1781

37. // Disallow Parent Intercept, just in case

 
  1. ViewParent parent = getParent();
  2. if ( parent != null) {
  3. parent.requestDisallowInterceptTouchEvent( true);
  4. }
38.linerlayout布局,如何把一个view指定父view的底部
在纯属布局中,将除最底部以外的的view都设置weight为1就可以了。

 
39.editview 左侧加drawable

如果只是在左边或者右边加图片 可以用EditeView 的一个属性; android:drawableLeft在text的左边输出一个drawable 如果在中间或者随意加图片的话,需要你重写EditView来实现图文混排!

40.加密算法

41.01-07 15:34:23.160: E/AndroidRuntime(1932): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load AES: findLibrary returned null

01-07 15:37:43.240: E/AndroidRuntime(2537): java.lang.UnsatisfiedLinkError: Native method not found: com.jetsun.hbfc.core.AESCoder.decryptCNew:()Ljava/lang /String;

01-07 15:37:43.230: D/dalvikvm(2537): No JNI_OnLoad found in /data/data/com.jetsun.hbfc/lib/libAES.so 0x4160abe0, skipping init

01-07 15:37:43.230: W/dalvikvm(2537): No implementation found for native Lcom/jetsun/hbfc/core/AESCoder;.decryptCNew:()Ljava/lang/String;

return makes pointer from integer without a cast [enabled by default]

01-07 17:51:47.520: D/dalvikvm(12438): No JNI_OnLoad found in /data/data/com.jetsun.hbfc/lib/libAES.so 0x41601a80, skipping init 01-07 17:51:47.525: I/JNIMsg(12438): jclass == NULL 01-07 17:51:47.525: I/JNIMsg(12438): step 1 : jclass Begin ok ! 01-07 17:51:47.525: I/JNIMsg(12438): encryptC == NULL 01-07 17:51:47.525: I/JNIMsg(12438): step 2 : decryptC new failed 01-07 17:51:47.525: I/JNIMsg(12438): step 2 : decryptC method prepared ok !

41.jni基础

android __android_log_print打印函数__源代码 http://blog.csdn.net/sno_guo/article/details/8143050 JNI字段描述符“([Ljava/lang/String;)V” http://fgsink.blog.163.com/blog/static/16716997020124310169911/ jni函数讲解http://blog.csdn.net/caimouse/article/category/661872/2 基于 Android NDK 的学习之旅----- C调用Javahttp://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.html No JNI_OnLoad found in … skipping inithttp://stackoverflow.com/questions/11798054/no-jni-onload-found-in-skipping-init eclipse ndk配置详细描述http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 基于 Android NDK 的学习之旅

汇总 ndk精华

http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.htmlhttp://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.htmlhttp://blog.csdn.net/caimouse/article/details/6853795http://fgsink.blog.163.com/blog/#m=0&t=1&c=fks_084071081085086066085080094095085080086066082095095068084

42.md5 aes加密

有固定的密钥key的AES加密 http://fenglingcorp.iteye.com/blog/586600 android Rsa 算法加 密明文--->公钥--->密文 密文-->密钥-->明文 http://blog.sina.com.cn/s/blog_6568e7880100x8r9.html java加密与解密的艺术作者http://snowolf.iteye.com/blog/379860 Android AES加密算法及其实现http://blog.csdn.net/randyjiawenjie/article/details/6587986 AES加密解密Android版http://www.cnblogs.com/carlosk/archive/2012/05/18/2507975.html

加密方式 AES 加密模式 AES/CBC/PKCS5Padding 加密向量 iv secretkey 秘钥 编码方式 utf-8

43.proguard的使用

代码混淆时,不混淆的部分。

44.socket

Socket简单用法 http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html 即时通讯
基于xmpp openfire smack开发之openfire介绍和部署[1] http://blog.csdn.net/shimiso/article/details/8816558 Openfire+Spark聊天Demo http://www.apkbus.com/android-69413-1-1.html openfire的Android客户端实现http://download.csdn.net/detail/sky_monkey/5820879#comment

45.音频编解码

FFmpeg的Android平台移植—编译篇 http://blog.csdn.net/gobitan/article/details/22750719#reply

46.f5 负载均衡
47. 掌上指路标 —– APP架构与导航设计 http://www.yixieshi.com/ucd/13188.html

 APP导航设计的步骤主要为以下三步:

  1. APP框架整理:信息架构 or 任务分析

  2. 框架层级判断: 扁平 vs 树状

  3. 导航具体表现形式:控件形式and摆放位置

48.移动App架构设计

http://blog.csdn.net/uxyheaven/article/details/38041091 移动App设计之分层架构+MVChttp://www.cnblogs.com/Logen/archive/2012/11/08/2760638.html

49.Android 精品开源项目

http://blog.csdn.net/caesardadi/article/details/21091645

50.使用GDB调试JNI代码

Android NDK应用原理 http://shihongzhi.com/ndk/ NDK 开发指南---Android NDK概览http://hualang.iteye.com/blog/1135105

51.ubuntu下搜狗输入法,使用过程中突然出现 “搜狗面板程序加载失败 请重启以使用输入法”导致无法使用

解决方法:终端sogou-qimpanel &

52.layout_alignBaseline的作用
53.android:layout_weight的真实含义

android:layout_weight的真实含义是:一旦View设置了该属性(假设有效的情况下),那么该 View的宽度等于原有宽度(android:layout_width)加上剩余空间的占比! 简单的说,就是剩余空间的权重.http://blog.csdn.net/yanzi1225627/article/details/24667299

54.即时通讯

基础:socket 原理: 如何保证socket长连接 http://blog.csdn.net/chengyingzhilian/article/details/7633640 android中对服务端的长连接【socket】 http://blog.csdn.net/yaya_soft/article/details/11778593


 
  1. 1.Android 基于Socket的聊天应用(二) http:/ /www.cnblogs.com/-run/archive/ 2012/ 04/ 07/ 2434837.html #!comments 下载demo
  2. Ubuntu 14.04下MySQL服务器和客户端的安装 http:/ /www.linuxidc.com/Linux/ 2014- 10/ 107912.htm
  3. Ubuntu 安装mysql和简单操作 http:/ /www.cnblogs.com/zhuyp1015/p/ 3561470.html
  4. 如何在mysql中创建数据库 http:/ /www.360doc.com/content /11/ 0719/ 18/ 2104556_134548635.shtml
  5. Java连接MYSQL 数据库的连接步骤 http:/ /database.51cto.com/art /201006/ 204217.htm
  6. 2.基于XMPP的即时聊天项目 需要google账号,目前无法登录 本项目是一套基于android+asmack+openfire+xmpp的安卓即时聊天服务端,项目直连google talk服务器,可以使用谷歌帐号登录客户端,测试需要至少两个谷歌帐号。在程序里添加好友即可聊天
  7. 3.Android手机通过socket与pc通信 http:/ /blog.csdn.net/tobacco5648/article/details/ 7742295
55.ubuntu显示端口占用、正在运行的程序,以及强制关闭一个进程

 
  1. 1. 显示占用某个端口的程序
  2. lsof -i: 80
  3. lsof -i: 5000
  4. 2. 显示某个程序是否在运行,查看某个运行的程序
  5. ps -aux | grep "paster"
  6. ps -aux | grep apache2
  7. 3. 杀掉一个进程,和强制杀掉一个进程
  8. kill 211119
  9. sudo kill - s 9 21119
56.设置Activity进入退出动画

使用代码设定

通过调用overridePendingTransition() 可以实时修改Activity的切换动画。但需注意的是:该函数必须在调用startActivity()或者finish()后立即调用,且只有效一次。

57.滑动返回

android-swipelistview
SwipeBackLayout SlidingFinish

自从用了swipebacklayout, 友好度提高了许多。 但是又遇到一个问题 每个界面在滑动返回时候都能够看到桌面 ,然后才跳到我的主界面。 解决方案: 主界面窗口不要设置透明 false,其他界面true

58.Android 虚拟键盘弹出把底部栏顶上去的解决办法

解决办法:

在AndroidManifest的相应的activity中加上:android:windowSoftInputMode="adjustPan"http://www.linuxidc.com/Linux/2011-10/46070.htm

59. 在EditText中插入表情图片 (CharacterStyle&SpannableString) http://gundumw100.iteye.com/blog/904107

 
  1. EditText通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?
  2. 记得android中有个android.text包,这里提供了对文本的强大的处理功能。
  3. 添加图片主要用SpannableString和ImageSpan类:
  4. Java代码 收藏代码
  5. Drawable drawable = getResources().getDrawable(id);
  6. drawable.setBounds( 0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
  7. //需要处理的文本,[smile]是需要被替代的文本
  8. SpannableString spannable = new SpannableString(getText().toString()+ "[smile]");
  9. //要让图片替代指定的文字就要用ImageSpan
  10. ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
  11. //开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)
  12. //最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12
  13. spannable.setSpan(span, getText().length(),getText().length()+ "[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  14. setText(spannable);
60.viewpager中嵌套gridview

自定义带表情键盘 android 表情,软键盘冲突解决方案(仿微博等SNS应用)http://blog.csdn.net/jj120522/article/details/9825871 日历 android中ViewPager嵌套GridView引发的一系列UI卡顿不顺畅的问题 http://www.android100.org/html/201403/10/5840.html Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动http://blog.csdn.net/janice0529/article/details/17335473 ViewPager+GridView实现宫格横向滑动切换http://download.csdn.net/detail/yefengyulu/5433913

61.异常:java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams的终极解决方式

思路:从原来的View中直接获取LayoutParams。http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1117/1991.html 今天在使用LayoutParams时出现了一个问题,我是这样用的:


 
  1. 在gridview初始化的时候,为gridview添加了一个header(我用的是第三方GridView是可以添加header的):
  2. headerView = new View(getActivity());
  3. LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, ( int) 300);
  4. headerView.setLayoutParams( params);
  5. mGridView.addHeaderView(headerView);
  6. 然后当程序执行到某处,我希望通过setLayoutParams来改变这个高度,于是我这样做:
  7. LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, 500);
  8. headerView.setLayoutParams( params);
  9. 重点是,两个LayoutParams 都是ViewGroup的LayoutParams ,然后一执行就出现下列错误:
  10. java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams
  11. 跟android中的很多异常一样,你去仔细推敲异常本来的含义往往是百思不得其姐的,异常说的是两个是不同类型的LayoutParams ,但明明都是ViewGroup的LayoutParams。而且我确定ViewGroup的LayoutParams用在GridView的header上是可以的,因为我不执行上面的第二段代码不会报错(再次强调我用的是第三方GridView是可以添加header的)。
  12. 然后就在stackoverflow上查找答案,虽然没找到满意的,但是有个人的回答倒是点醒了我,是不是第二段代码中又重新创建了一个LayoutParams的关系?于是我将第二段代码改成:
  13. **LayoutParams params = headerView.getLayoutParams();**
  14. params.height = 500;
  15. 其实就是不去新建一个LayoutParams,而是从原来的View中直接获取LayoutParams。
  16. 改完运行结果没有出现异常了。
  17. 看来,当一个View已经有了LayoutParams,是不能再次添加一个新创建的LayoutParams的。
62.android4.0的edittext屏蔽输入法时候光标显示问题 通过反射解决 http://www.eoeandroid.com/thread-248276-1-1.html

 
  1. if (android.os. Build. VERSION. SDK_INT <= 10) {
  2. mEditText.setInputType( InputType. TYPE_NULL);
  3. } else {
  4. getWindow().setSoftInputMode( WindowManager. LayoutParams. SOFT_INPUT_STATE_ALWAYS_HIDDEN);
  5. try {
  6. Class< EditText> cls = EditText. class;
  7. Method setSoftInputShownOnFocus;
  8. setSoftInputShownOnFocus = cls.getMethod( "setSoftInputShownOnFocus", boolean. class);
  9. setSoftInputShownOnFocus.setAccessible( true);
  10. setSoftInputShownOnFocus.invoke(mEditText, false);
  11. } catch ( Exception e) {
  12. e.printStackTrace();
  13. }
  14. try {
  15. Class< EditText> cls = EditText. class;
  16. Method setShowSoftInputOnFocus;
  17. setShowSoftInputOnFocus = cls.getMethod( "setShowSoftInputOnFocus", boolean. class);
  18. setShowSoftInputOnFocus.setAccessible( true);
  19. setShowSoftInputOnFocus.invoke(mEditText, false);
  20. } catch ( Exception e) {
  21. e.printStackTrace();
  22. }
  23. }
63.自定义控件

getContext的使用

自定义android用户控件,使用回调函数实现自定义事件

64.如何获取到,EditView 的 粘贴复制呢(解决) 重写editview控件,onTextContextMenuItem 。http://www.eoeandroid.com/thread-61482-1-1.html

Android学习笔记之通过剪切板传递数据 http://www.it165.net/pro/html/201404/11599.html

Android EditText 取消复制粘贴剪贴功能 http://www.xuebuyuan.com/2038921.html 在API-11以上,也就是Android 3.0以上的版本,这个操作就无效了,需要用到以下方法:


 
  1. editText .setCustomSelectionActionModeCallback( new ActionMode .Callback()
  2. editText .setImeOptions( EditorInfo .IME_FLAG_NO_EXTRACT_UI);

如何捕获Edittext的粘贴方法?http://www.apkbus.com/android-92944-1-1.html 向EditView插入qq表情,并可删除表情或文字 android开发教程 http://cache.baiducontent.com/c?m=9d78d513d99417f41efa950e494d80230e55f0744ddcc76508c3e34984102d564616f4cd27356074c4c40c7071a55e28eee47132690c7af1dd8a9f4baea68f6d6acd3034074fda17528e42f9c84427d620e707a9fa04bdfcaf6c8eaed0d0d95652d751066787f58f5b1714bd35b64b6f&p=80769a47959d18ff57ee927c1c4791&newp=c67f8f5e85cc43be43bd9b7d0b148a231610db2151d6d2176ecf&user=baidu&fm=sc&query=editview%C9%BE%B3%FD%D2%BB%B8%F6&qid=f5bf3b5b0000bd4e&p1=3

65.android EditText插入字符串到光标所在位置

 
  1. EditText mTextInput=(EditText)findViewById(R.id.input); //EditText对象
  2. int index = mTextInput.getSelectionStart(); //获取光标所在位置
  3. String text= "I want to input str";
  4. Editable edit = mTextInput.getEditableText(); //获取EditText的文字
  5. if (index < 0 || index >= edit.length() ){
  6. edit. append(text);
  7. } else{
  8. edit.insert(index,text); //光标所在位置插入文字
  9. }
66.Android学习笔记:浅析自己的聊天系统的设计思想 http://www.android100.org/html/201406/09/22125.html
67.java 正则表达式(Invalid escape sequence (valid ones are \b \t \n \f \r " ' \ ) 请问是啥原因呢?
把你的里面的\全部替换为\\即可

 
69.error

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.access$1400(ActivityThread.java:131) 01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.ActivityThread$H.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.hbfc; 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.access$1500(ActivityThread.java:144) 01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.ActivityThread$H.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.hbfc; 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闪退的办法 http://blog.csdn.net/ieicihc/article/details/9629991

 
  1. 方法1.最好解决办法:
  2. 删除文件 [workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
  3. 方法2.在文件eclipse/configuration/config.ini末尾加上如下一行:

org.eclipse.swt.browser.DefaultType=mozilla

但是不怎么起作用,在不断切换引用时,有时也会闪退。回来转到androidstudio,用eclipse不多了,偶尔用用没问题。

71.Android WebView的前进、后退、与刷新

 
  1. mWebView.goBack(); //后退
  2. mWebView.goForward(); //前进
  3. mWebView.reload(); //刷新
  4. webview有自己的堆 stack
72.You must call removeView() on the child's parent first

 
  1. 在做alertdialog是的时候报了这么一个错误:
  2. java.lang.IllegalStateException:
  3. The specified child already has a parent.
  4. You must call removeView() on the child's parent first.
  5. 搞了许久,终于理解了。
  6. et1 = (EditText)findViewById(R.id.editText1);
  7. builder.setView(et1); -- AlertDialog.Builder builder
  8. et1我写在了xml里面,这样报错,原因是一女不可二嫁。
  9. et1的parent即是R.layout.main 又是AlertDialog。
  10. 自然就报错了要你removeView()了。
  11. 解决方法有两种
  12. 1.动态生成EditText
  13. et1 = new EditText( this);
  14. builder.setView(et1);
  15. 2. 放在另一个xml中,用inflater
  16. LayoutInflater inflater = LayoutInflater. from( this);
  17. View textEntryView = inflater.inflate(R.layout.test1, null);
  18. et1 = (EditText)textEntryView.findViewById(R.id.editText1);
  19. builder.setView(textEntryView ); 注意这里是textEntryView ,不是et1
  20. 补充还有一种方法,如果此布局中只有该view,可以直接在xml只布局此view。
73.Activity切换动画无效(android:windowIsTranslucent)影响(android:windowAnimationStyle)http://blog.csdn.net/xuewater/article/details/36398803
style里面设置了android:windowIsTranslucent这个属性

 
74.Android 解决程序启动时的黑屏问题 http://blog.csdn.net/fancylovejava/article/details/39643449
android 界面切换黑屏处理从A切换到B的过程中出现黑屏,可以在Manifest文件中改变B的theme,在theme里添加<item name="android:windowIsTranslucent">true</item>,这样从A到B的过程中,因为B是透明的,所以背景就是A。这样的用户体验比较好

 
75.
atvity主题加透明属性 如下: <item name="android:windowIsTranslucent">true</item>  

 

在该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? http://www.xuebuyuan.com/1683269.html


 
  1. 请下载最新的proguard.jar, umeng官方最新的试了也是有问题,估计兼容型的不好吧,采用 http:/ /download.csdn.net/detail /msn465780/ 6625061这个 ok。
  2. 并替换你Android Sdk "tools\proguard\lib\proguard.jar"
  3. 在你的proguard.cfg加上代码:
  4. -dontwarn
  5. cn.jpush.**
  6. -keep class cn.jpush.** { *; }
77.android eclipse设置的断点无效的解决方案

 
  1. 1.排除 Run—— Skip All Breakpoints
  2. 2.排除断点无效的activity所在的进程是否是主进程。
78.极光推送富媒体

 
  1. 推送富媒体时,推送模版其实是通知,推送文件其实是自定义消息类型
  2. 通知 vs. 自定义消息 http: //docs.jpush.cn/pages/viewpage.action?pageId=3309701
  3. 富文本页面 Javascript 回调API http: //docs.jpush.cn/pages/viewpage.action?pageId=7536748
  4. Rich Push 开发指南 http: //docs.jpush.cn/pages/viewpage.action?pageId=7536799
79.内部跳转 Routable for Android
80.fjrefox firebug插件。chrome 自身F12都可以方便的查看并且编辑html
81 带有凭证的activity 必须在一个进程中。否则凭证会为空。还有一点在调试的时候,非主进程无法和主进程跳转调试。
82.apktool反编译过程中出现如下错误

 
  1. Exception in thread " main" brut .androlib .AndrolibException: Could not decode arsc file
  2. at brut .androlib .res .decoder .ARSCDecoder .decode( ARSCDecoder .java :56)
  3. at brut .androlib .res .AndrolibResources .getResPackagesFromApk( AndrolibResources .java :491)
  4. at brut .androlib .res .AndrolibResources .loadMainPkg( AndrolibResources .java :74)
  5. at brut .androlib .res .AndrolibResources .getResTable( AndrolibResources .java :66)
  6. at brut .androlib .Androlib .getResTable( Androlib .java :50)
  7. at brut .androlib .ApkDecoder .getResTable( ApkDecoder .java :189)
  8. at brut .androlib .ApkDecoder .decode( ApkDecoder .java :114)
  9. at brut .apktool .Main .cmdDecode( Main .java :146)
  10. at brut .apktool .Main .main( Main .java :77)
  11. Caused by: java .io .IOException: Expected: 0 x001c0001, got: 0 x00000000
  12. at brut .util .ExtDataInput .skipCheckInt( ExtDataInput .java :48)
  13. at brut .androlib .res .decoder .StringBlock .read( StringBlock .java :44)
  14. at brut .androlib .res .decoder .ARSCDecoder .readPackage( ARSCDecoder .java :102)
  15. at brut .androlib .res .decoder .ARSCDecoder .readTable( ARSCDecoder .java :83)
  16. at brut .androlib .res .decoder .ARSCDecoder .decode( ARSCDecoder .java :49)
  17. ... 8 more

由于使用新的adt,而反编译的apktool.jar不是最新的导致。使用新的apktool.jar替换原来的就可以了。官方下载地址 https://code.google.com/p/android-apktool/。

83.渠道打包工具

之前有的umeng,但是现在无法使用【因为android更新了编译的sdk版本,而umeng不在提供更新】。目前的做法是通过 gradle来打包Gradle多渠道打包

84.genymotion快速高效的android模拟器

https://www.genymotion.com/#!/developers/user-guide#license http://blog.csdn.net/langyuewu/article/details/39196653

需要翻墙。部分需要付费

85.使用Vitamio打造自己的Android万能播放器

直播方面 可以参考我翻译的Android如何直播RTMP流 86. Ctrl+Shift+F7 可以高亮当前元素在当前文件中的使用 Android Studio 如何提示函数用法? 先选中,然后按F2

87.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文件,就可以达到系统级的改动效果了。

88. 从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" }

89.Error:Execution failed for task ':xxx:compileDebugNdk'.

NDK not configured. Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local.properties. (On Windows, make sure you escape backslashes, e.g. C:\ndk rather than C:\ndk)

在androidstudio中的local.properties中添加ndk.dir= 你的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 https://github.com/castorflex/SmoothProgressBar

#####91.@+id @id android:id ?android:attr

。@+id:宣告一個id值來識別控制項

。@id:透過id值引用控制項

。android:id:透過id值, 引用Android系統內部的資源

。?android:attr:引用Android預置定義樣式

#####92. Looks like there is no way to avoid modifications made by the import plugin. All the settings it has is three checkboxes related to dependency management. I tried to uncheck all of them but still it does change my project structure.

I managed to add existing library projects manually:

  1. Copied library's directory under the root directory of my project.
  2. Referenced that library in settings.gradle by adding include ':libraryA'.
  3. Added dependency to my project's build.gradle: compile project(':libraryA').

Moreover, after that the IDE recognized that library as module and highlighted its folder in bold font whithin Project Structure.

#####93.如何从当前的activity获得根视图 或者 Android如何获取Activity的View?

((ViewGroup)findViewById(android.R.id.content)).getChildAt(0) 或者 getWindow().getDecorView().findViewById(android.R.id.content)

#####94.radiogroup中的radiobutton如何不显示图标button,并且可以等比例再用wight android:button="@none" 或@null android:drawableTop ="@drawable/xxx" 或者也设置为空

#####95.搜索也是一门艺术 浓缩搜索 详细搜索

#####96.android layoutinfater 没有显示内容 检查parent试图是否为空

#####97..Error:Execution failed for task ':app:dexDebug'.UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)

检查 Multiple dex #####98.android动画的三种形式 tween animition ,frame animition ,property animition

#####99.LoopingViewPager QuickReturn

#####100. appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable'http://stackoverflow.com/questions/26431676/appcompat-v721-0-0-no-resource-found-that-matches-the-given-name-attr-andro

#####101.recycleview vs listview head foot .recycleview实现gridview 新事物不要躲避,机遇。

#####102.清除Android工程中没用到的资源 http://www.cnblogs.com/angeldevil/p/3725358.html

#####103.xmlns:tools与tools:context tools:context="activity name"这一句不会被打包进APK。只是ADT的Layout Editor在你当前的Layout文件里面设置对应的渲染上下文,说明你当前的Layout所在的渲染上下文是activity name对应的那个activity,如果这个activity在manifest文件中设置了Theme,那么ADT的Layout Editor会根据这个Theme来渲染你当前的Layout。就是说如果你设置的MainActivity设置了一个Theme.Light(其他的也可以),那么你在可视化布局管理器里面看到的背景啊控件啊什么的就应该是Theme.Light的样子。仅用于给你看所见即所得的效果而已。

#####104. android-studio下使用volley Android working with Volley Library http://www.androidhive.info/2014/05/android-working-with-volley-library-1/ http://blog.gssxgss.me/setup-android-studio-and-volley-usage-1/

#####105.androidstudio 导入libs后要同步一下才可以用

#####106.fragment + butterknife 的使用 othersetting-->Compiler → Annotation Processors. Check "Enable annotation processing".

#####107. com.astuetz.PagerSlidingTabStrip$PageListener.onPageScrolled(

#####108. E/InputEventReceiver﹕ Exception dispatching input event. E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback E/MessageQueue-JNI﹕ java.lang.RuntimeException: native typeface cannot be made at android.graphics.Typeface.(Typeface.java:175) at android.graphics.Typeface.createFromAsset(Typeface.java:149) at NewsFragment$1.onPageSelected(NewsFragment.java:74)

androidstudio中assert的位置和eclipse中的不同。需要注意。否则调用assert中资源会找不到而出现问题。

#####109.Custom Fonts in Android
http://sudharti.github.io/articles/custom-fonts-android/

Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/font_name.ttf"); Typeface tf2 = Typeface.createFromAsset(getActivity().getAssets(), "fonts/font_name2.ttf");

TextView tv = (TextView) findViewById(R.id.textview); tv.setTypeface(tf); //Set Typeface

EditText et = (EditText) findViewById(R.id.edittext); et.setTypeface(tf2);

#####110.PagerSlidingTabStrip the view throws an exception if there are no tabs available to display. It would be great if the view failed gracefully or gave a better error message. https://github.com/astuetz/PagerSlidingTabStrip/issues/69

#####111. Android开发之ScrollView中嵌套ListView的解决方案 http://blog.csdn.net/minimicall/article/details/40983331


 
  1. 重写listview的onmeasure方法
  2. @ Override
  3. protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec) {
  4. int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
  5. MeasureSpec.AT_MOST);
  6. super.onMeasure(widthMeasureSpec, expandSpec);
  7. }
  8. 这个方法有一个同样的毛病,就是默认显示的首项是ListView,需要手动把ScrollView滚动至最顶端。
  9. sv = (ScrollView) findViewById(R.id.act_solution_4_sv);
  10. sv.smoothScrollTo( 0, 0);
  11. int AT_MOST Measure specification mode: The child can be as large as it wants up to the specified size.
  12. int EXACTLY Measure specification mode: The parent has determined an exact size for the child.
  13. int UNSPECIFIED Measure specification mode: The parent has not imposed any constraint on the child.
112. java.lang.NullPointerException at android.webkit.HTML5VideoView.isPlaying(HTML5VideoView.java:122) at android.webkit.HTML5VideoViewProxy$VideoPlayer.isPlaying(HTML5VideoViewProxy.java:269)

 
  1. 检查清单文件对应activity的配置
  2. android:configChanges= "orientation|screenLayout"

#####113. Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

#####114.http://jgilfelt.github.io/android-actionbarstylegenerator/ 这个网站可以在线配置action bar的样式,支持holo、support v7、sherlock

#####115.在其它界面异常之后返回到FragmentActivity Fragment显示异常(重叠或不显示)解决方 ...


 
  1. 前面专门开了个帖来问这个问题,问题描述详见:http: //www.eoeandroid.com/thread-496879-1-1.html
  2. 当然,问题没有解决掉,一直也很郁闷,今天花了点时间换了N多关键词来找,最后也忘了在哪里看到一个方法,死马当活马医的写上,居然好了。
  3. 解决方案是,在FragmentActivity里重写onSaveInstanceState,并且去掉 super.onSaveInstanceState()即可。
  4. 原因:猜测应该是在二级界面抛了异常之后,应用在返回上级界面时会从onSaveInstanceState内读取FragmentActivity缓存的状态,所以导致Fragment全部显示(显示重叠)或者显示不出来。(只是猜测)
  5. @Override protected void onSaveInstanceState(Bundle outState) { }

#####116.修复Android App中出现的重复菜单项及Fragment重叠 https://typeblog.net/tech/2014/08/22/fix-duplicate-menu.html


 
  1. fragment replace出现重叠
  2. 一般fragment的容器都是fragment,用到的方法:
  3. FragmentManager fm = getActivity().getSupportFragmentManager();
  4. FragmentTransaction ft = fm.beginTransaction();
  5. ft.replace(R.id.container, fragment);
  6. ft.addToBackStack(null);
  7. ft.commit();
  8. replace这个方法在fragment内部直接代入布局的 id是不会有问题的,但是在外部比如Activitiy中用就会出现fragment叠加的问题。
  9. 有很多人说给每个fragment设置背景色或图片,但是我觉得额外费资源。
  10. 其实只要改成这样就好了,但这之中的原理又有谁懂呢?
  11. http://stackoverflow.com/questions/ 12958555/android- replace-fragment-still-displays- some- of-the-replaced-fragment
  12. transaction.replace(((ViewGroup)(getView().getParent())).getId(), fragment);

#####117.通过activity 得到它的fM,通过tag指定到上级fragment,从而获取到其中的接口数据 yyb if (getActivity().getSupportFragmentManager().findFragmentByTag("videos") instanceof QuickReturnInterface) { mCoordinator = (QuickReturnInterface) getActivity().getSupportFragmentManager().findFragmentByTag("news"); } else { throw new ClassCastException("Parent container must implement the QuickReturnInterface"); }

#####118.内存优化相关 ANDROID内存优化(大汇总) http://blog.csdn.net/a396901990/article/details/38707007

#####119.PagerSlidingTabStrip Changing the title of the adapter and notifyDatasetChanged does not work. #13 Call notifyDataSetChanged() on the PagerSlidingTabStrip instead. Worked for me yesterday with data loaded from a CursorLoader.

#####120.Ubuntu下的屏幕录制软件RecordMyDesktop


 
  1. 安装:
  2. sudo apt-get install gtk-recordmydesktop
  3. 使用:
  4. 安装好之后该软件会在影音软件里面,打开就可以。然后可以选择需要录制的窗口,如果不选择的话就默认是用户在屏幕上的所有操作。点击“录制”就开始了,此时该软件隐藏在 上方的任务栏(红色圆圈),可以随时停止录制。得到的视频保存在主目录下,其格式为Ogg。如果需要把它转换为avi格式,可以安装软件mencoder,命令如下:
  5. sudo apt- get install mencoder
  6. 然后用下面的命令转换:
  7. mencoder -ovc lavc -oac copy -lavcoptsvcodec=mpeg4 -o outfile.avi infile.ogv
  8. ubuntu动态截图,制作GIF动画
  9. Ubuntu 下, 如何录制 gif 格式的屏幕截图
  10. 1. 安装 gtk-recordmydesktop 来录制屏幕, 安装 mplayer 將视频分解成单帧图片, 安装 imagemagick 將单帧图片压缩成一张 gif:
  11. sudo apt- get install imagemagick mplayer gtk-recordmydesktop
  12. 2. 命令行下执行, 录制并保存文件为 out.ogv:
  13. gtk-recordmydesktop
  14. 3. 执行如下命令將 out.ogv 分解成单帧图片:
  15. mplayer -ao null out.ogv -vo jpeg:outdir=.
  16. 4. 执行如下命令將单帧图片压缩成 gif 图片:
  17. convert *.jpg out.gif
  18. 5. 执行如下命令將 gif 图片进行压缩:
  19. convert out.gif -fuzz 10% -layers Optimize optimized.gif
  20. Live Like You 're Dying And Never Stop Tying

#####121.一个ListView中会创建很多个convertview,并不是所有的都复用的,比如同一屏显示的肯定都是不一样的convertview。

#####122.性能优化 框架的选择。volley【尽量google支持的或者原生的】 buttferty greendao 【没有采用反射技术的,比如greendao使用的是code generation。而不是注解】


 
  1. 为什么greenDao使用的是code generation,而不是注解?
  2. 对于greenDao,代码生成是非常合理的。在Android平台上,基于注解的解决方式是有缺陷的:它们不得不依赖于元数据的解析和反射。特别是反射,会显著降低ORM工具的性能。另一方面,greenDao会为Android生成优化过的代码。这些生成的代码完全避免了反射。这也是greenDao如此快的主要原因。另一个优势是大小。
  3. greenDao的核心 lib是非常小的(在 100K以下,包括单元测试)。这是因为对于一些ORM的内部逻辑都在generator中,而不是在核心库中。
  4. greenDao包含了:DaoCore,DaoGenerator和DaoTest。DaoCore是需要你加入到android项目中的,在Apache License 2版本以下是许可的。
  5. DaoGenerator是java程序,负责实体的生成,DAO和其它的文件。DaoTest是单元测试用例额,确保了greenDao本身和其稳定性。
  6. DaoGenerator 和DaoTest 在GPL V3以下是可用的。这些许可条款可以满足大部分的开发者使用。

#####123.Lazy Loading lazy不是翻译成懒,差不多算延迟、推迟的意思。 是说不在初始化时loading,而是推迟到必须loading时才进行loading。

#####124.android-stuido File > Invalidate 问题:could not save application settings:java.util.zip.zipexception:incorrect header check

https://code.google.com/p/android/issues/detail?id=56190

 

解决 It looks like there's a corrupted cache. To work around this, invoke File > Invalidate Caches. If you can't start Android Studio at all, try going to the cache directory (its location depends on your platform) and delete it, then start Studio.

#####125.Android.gitignore .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build # Built application files *.apk *.ap_


 
  1. # Files for the Dalvik VM
  2. *.dex
  3. # Java class files
  4. *. class
  5. # Generated files
  6. bin/
  7. gen/
  8. # Gradle files
  9. .gradle/
  10. build/
  11. /*/build/
  12. # Local configuration file (sdk path, etc)
  13. local.properties
  14. # Proguard folder generated by Eclipse
  15. proguard/
  16. # Log Files
  17. *.log

#####126.NDK With Android Studio http://blog.csdn.net/u011570979/article/details/43966567

#####127.chrome+红杏 honx.in/i/VLMhwoIaA1yvXz7n

#####127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html

#####128. Android TextView drawableLeft 在代码中实现

方法1

Drawable drawable= getResources().getDrawable(R.drawable.drawable); /// 这一步必须要做,否则不会显示. drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); myTextview.setCompoundDrawables(drawable,null,null,null);

方法2

public void setCompoundDrawablesWithIntrinsicBounds (Drawable left, Drawable top, Drawable right, Drawable bottom)

#####129. /* 去锯齿 */ paint.setAntiAlias(true);

#####130.android 画图之setXfermode
http://blog.csdn.net/wm111/article/details/7299294 setXfermode


 
  1. 设置两张图片相交时的模式
  2. 我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。 如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;
  3. 而setXfermode就可以来解决这个问题
  4. 一般来说 用法是这样的
  5. [java] view plaincopy
  6. Canvas canvas = new Canvas(bitmap1);
  7. paint.setXfermode( new PorterDuffXfermode(Mode.SRC_IN));
  8. canvas.drawBitmap(mask, 0f, 0f, paint);

#####131. ubuntu android cordova Setting up PhoneGap on Ubuntu for Android app development

#####132.webview的页面都finish了居然还能听到视频播放的声音,查了下发现webview的 onResume方法可以继续播放, onPause可以暂停播放, 但是这两个方法都是在Added in API level 11添加的,所以需要用反射来完成。 停止播放:在页面的onPause方法中使用: webView.getClass().getMethod("onPause").invoke(webView,(Object[])null); 继续播放:在页面的onResume方法中使用: webView.getClass().getMethod("onResume").invoke(webView,(Object[])null); 这样就可以控制视频的暂停和继续播放了。


 
  1. 在webView的Activity配置里面加上:
  2. android:hardwareAccelerated= "true"

#####133.Create new project on Android, Error: Studio Unknown host 'services.gradle.org' 解决方法 please try following steps: Go to..


 
  1. File --> settings --> HTTP Proxy [Under IDE Settings] --> Auto-detect proxy settings
  2. you can also use the test connection button and check with google.com if it works or not
  3. [关于红杏的公益代理, Android Studio以及freso的编译]( http://www.liaohuqiu.net/cn/posts/about-red-apricot- and-compiling-fresco/)

#####134.ListView.setOnItemClickListener 点击无效


 
  1. 如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效,
  2. 事件会被子View捕获到,ListView无法捕获处理该事件.
  3. 解决方法:
  4. 在checkbox、button对应的view处加android:focusable= "false"
  5. android:clickable= "false"android:focusableInTouchMode= "false"
  6. 其中focusable是关键
  7. 从OnClickListener调用getSelectedItemPosition(),Click 和selection 是不相关的,Selection是通过D-pad or trackball 来操作的,Click通常是点击操作的。
  8. arg2参数才是点击事件位置的参数

#####135.listview addheader 如果有多个header,可以把多个header封装。把封装后的view作为header

#####136.emojicon emojicon, https://github.com/rockerhieu/emojicon emojicon, https://github.com/ankushsachdeva/emojicon

#####137.新闻评论页,如何实现盖楼,listview的高度自适应? 控件的高度 设为wrap_content

#####138.android改变CheckBox和后面文字的间距 http://www.haodaima.net/art/1891872 解决方法: 1.设置android:paddingLeft="25dip",就可以了。 2.设置checkbox的背景图片。系统默认的给checkbox加的有一个透明的背景。

#####139.volley请求超时 如何处理 http://stackoverflow.com/questions/17094718/android-volley-timeout


 
  1. myRequest .setRetryPolicy( new DefaultRetryPolicy(
  2. MY_SOCKET_TIMEOUT_MS,
  3. DefaultRetryPolicy .DEFAULT_MAX_RETRIES,
  4. DefaultRetryPolicy .DEFAULT_BACKOFF_MULT));

#####140.Listview getItemViewType的使用 对于不同xml,使用多个viewhold

#####141.Android “Only the original thread that created a view hierarchy can touch its views.”http://stackoverflow.com/questions/5161951/android-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-vi thread = new Thread(){ @Override public void run() { try { synchronized (this) { wait(5000);


 
  1. runOnUiThread( new Runnable() {
  2. @Override
  3. public void run() {
  4. dbloadingInfo.setVisibility(View.VISIBLE);
  5. bar.setVisibility(View.INVISIBLE);
  6. loadingText.setVisibility(View.INVISIBLE);
  7. }
  8. });
  9. }
  10. } catch (InterruptedException e) {
  11. e.printStackTrace();
  12. }
  13. Intent mainActivity = new Intent(getApplicationContext(),MainActivity.class);
  14. startActivity(mainActivity);
  15. };
  16. };
  17. thread.start();

#####142.Java SDK提供了对上述三种压缩技术的支持:Inflater类和Deflater类直接用zlib库对数据压缩/ 解压缩,GZIPInputStream类和GZIPOutputStream类提供了对gzip格式的支持,ZipFile、Zi pInputStream、ZipOutputStream则用于处理zip格式的文件。


 
  1. 所以,你应当根据你的具体需求,选择不同的压缩技术:如果只需要压缩/解压缩数据,你
  2. 可以直接用zlib实现,如果需要生成gzip格式的文件或解压其他工具的压缩结果,你就必须
  3. 用gzip或 zip等相关的类来处理了。

#####143.利用volley进行http设置请求头、超时及请求参数设置(post)

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值