android开发中遇到的问题【一】
一。在一个xml中能否使用同一个include多次
android中include标签的使用
?二
android button在 linerlayout中底部居中
把button外的权重设为1.0
五。imageview 按比例缩放
android:scaleType是控制图片如何resized/moved来匹对ImageView的size。
ImageView.ScaleType / android:scaleType值的意义区别:
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。
六。android如何获取时间差?
七。
ImageLoader must be init with configuration before using 错误解决方法
imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));
八。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
android:name="xxx.MyApplication">
event.getAction();
Found both android-support-v4 and android-support-v13 in the dependency list.
怎么关联android-support-v4源码
问题:使用viewpager或者fragmentActivity等一些v4包下的类,当我们按F3时无法查看到源码,这个时候就需要我们关联该源码,该源码的关联与android源码的关联不一样。
解决办法:
1、首先在工程的libs目录下创建一个配置文件:android-support-v4.jar.properties(建议这样)
2、查找自己安装的SDK的目录下的android-support-v4的src源码地址
本人的为:D:\eclipse\android-sdk\extras\android\compatibility\v4\src
3、编辑android-support-v4.jar.properties文件为:(注意是双斜杠)
src = D:\eclipse\android-sdk\extras\android\compatibility\v4\src
4、关闭自己的工程后再打开,此时进去选择ViewPager后F3就能看到源码了。
5、恭喜:android-support-v4 源码已经成功的关联上。
13.eclipse 修改设置Ctrl+Shift+F长度
在window的Preferences中的Java->Code Style->Formatter
到了这一步就是找到Ctrl+Shift+F的格式化模板了,这里不能直接修改。因为是eclipse默认的模板,是只读的。
我们可以new 一个Formatter,然后点击edit就可以修改模板。
我修改模板主要就是修改那个Ctrl+Shift+F后,把我的代码换多行了。
修改选项卡中的Line Wrapping选项卡, 有一个Maximum line with: 80(默认);
这里默认是80我们可以把它修改成120的,那样不超过120个字符就不会被换行了!
其他自己需要的格式都可以在这里面修改。当然你还可以导出你自定义的格式,导出的是xml格式的。以后在其他地方
还可以导入。这样就不用再自定义了。
android-develop 镜像路径
http://androiddoc.qiniudn.com/
google,被和谐后,通过vpn或者访问上述镜像路径。
15.fragment Andriod开发技巧——Fragment的懒加载
一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个fragment的时候,它才去初始化呢?
答案就在Fragment里的setUserVisibleHint这个方法里
关于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图的录制
byzanz
byzanz的安装与使用
Ubuntu下安装
sudo add-apt-repository ppa:fossfreedom/byzanz
sudo apt-get update sudo apt-get install byzanz
你可以通过如下命令来完成录制过程:
byzanz-record -d 40 -x 0 -y 0 -w 400 -h 320 byzanz-demo.gif
其中:
-d 40 为录制的时长为 40 秒
-x 0 录制区域的横坐标
-y 0 录制区域的纵坐标,记住:屏幕右上角为原点(0,0)
-w 400 录制区域的宽度
-h 320 录制区域的高度
byzanz-demo.gif 保存的文件名
详细参数可通过byzanz-record --help查看。
http://www.tuicool.com/articles/YFJrem
另外:windows下 GIF屏幕录像机 V2.0
23.public void onPageScrollStateChanged(int arg0)
此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
当页面开始滑动的时候,三种状态的变化顺序为(0,1,2,0)
24.
在eclipse.ini文件中加入 -Dorg.eclipse.swt.browser.DefaultType=mozilla
然后clean一下就OK了 执行clean命令
26.viewpager实现画廊(一屏多个Fragment)效果
28.Array constants can only be used in initializers
int CC [] ={1,2,3}; 数组定义并附初始值的时候,数组的长度就定了,长度是3
而且数组从新赋值不能再像定义的时候那样
而要一个一个地更改
CC[0]=1;
CC[1]=2;
CC[2]=3;
Array constants can only be used in initializers
29.android 插件化
30.scrollview在内容较少时也可以滚动
在XML为ScrollView添加属性android:overScrollMode=”always”即可
31.gridview/listview 点击时 android默认背景是黄色的,如何去掉选中时的黄色背景
方法一,在控件被初始化的时候设置
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
listView.setSelector(new ColorDrawable(Color.TRANSPARENT));
方法二,在布局文件中设置listSelector属性
android:listSelector="@android:color/transparent"
android:numColumns="auto_fit"
android:columnWidth="50dp"
android:stretchMode="spacingWidth"
android:layout_weight="1.0"
android:layout_height="0dip"
android:layout_width="match_parent"/>
android:listSelector="@android:color/transparent"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
当然也可以定制化自己想要的效果。
推荐使用方法二,解耦逻辑代码与布局文件。
另外listview还有两个基础问题
问题1:
listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
解决办法:
xml中: android:scrollingCache="false" 或者 android:cacheColorHint="#00000000"
代码中: setScrollingCacheEnabled(false) 或者 setCacheColorHint(0) 或者setCacheColorHint(Color.TRANSPARENT);
问题2:
listview的上边和下边有黑色的阴影。
解决办法:
xml中: android:fadingEdge="none"
代码中:setFadingEdgeLength(0);
32.ScrollView仅支持一个子项,报错ScrollView can host only one direct child
解决办法:
在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