android小知识3

一、关于横竖屏切换的一个题外话

在竖屏界面中要想实现部分控件显示横屏效果:只需设置控件的android:rotation属性。当然这样的后果是控件宽高及padding、margin等属性需要重新设值,否则界面出奇的丑。

二、getDrawable()和decodeResource()区别

使用getResource.getDrawable加载图片资源时,无论对同一个资源加载多少次,堆内存的占用没有变化;但用BitmapFactory.decodeResource()加载图片资源时,对同一个资源,每加载一次,都需要重新分配一下堆内存。

三、LinearLayout设置selector

记得加上clicable=true

android:background="@drawable/btm_selector"
android:clickable="true"
要实现类似微信底部按钮的点击效果,自己的一个实现:

<LinearLayout
        android:id="@+id/ll_home"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/btm_selector"
        android:clickable="true"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/iv_home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/btm_home_selector" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="首页"
            android:textColor="@color/white" />
</LinearLayout>

btm_selector文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/btm_gray_sel" android:state_pressed="true"/>

    <item android:drawable="@color/btm_gray_sel" android:state_selected="true"/>
    
    <item android:drawable="@color/btm_gray_sel" android:state_enabled="false"></item>
    
    <item android:drawable="@color/btm_gray"></item>

</selector>
btm_home_selector文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:drawable="@drawable/btm_home" android:state_pressed="true"/>

    <item android:drawable="@drawable/btm_home" android:state_focused="true"/>
    
    <item android:state_enabled="false" android:drawable="@drawable/btm_home"></item>

    <item android:drawable="@drawable/btm_home_not"/>

</selector>

1、如果父布局设置了clickable=true事件,则子布局的selector中设置click事件无效。

2、selector中顺序问题:


3、selector中设置enable的用法:当点击微信底部的通讯录按钮时,通讯录按钮显示被选中颜色,只需设置该按钮setEnable=false即可达到目的。

四、json解析的一个问题

JSONObject jsonObject = new JSONObject("{'userName':120000400,'password':00401032}");
	if (jsonObject.has("password")) {
		password = jsonObject.getLong("password")+"";
	}
	System.out.println("password::WWWWWWWWWWWWW" + password+"CCCCCCC"+jsonObject.getString("password"));
}
你觉得解析出的password值是多少?不是00401032,而是401032.0。why?

从字符串看,password的值是int或者long型,但是却以0开头,所以会出现这种情况。

该怎么半呢?

改为:JSONObject jsonObject = new JSONObject("{'userName':120000400,'password':'004010329'}");

五、引用外部项目library失败的原因

转自:http://blog.csdn.net/cuiran/article/details/17916187

在向android工程中导入library的时候,会和出现导入不成功,打开查看添加library界面,会发现你添加的library的路径出现D:/work/...?类似的情况,但是别的工程使用的时候又不会出错。
 如果导入library出错的话一般就是一下几种情况:
1.检查你library的targetSDK和你的工程的targetSDK,保证你的工程targetSDK要一致或者更高
2.最好将library的存放位置放到你当前工程的位置

六、java.io.FileNotFoundException permission denied

两个错误原因:1)没加权限。2)文件路径错误,自己把Environment.getExternalStorageDirectory()+"/bsbAdvert"+i+".jpg"写成了Environment.getExternalStorageDirectory()+"bsbAdvert"+i+".jpg",少了个"/"导致一直报这个错。

七、EditText获取光标,设置光标位置

et.requestFocus();//获取焦点
et.setSelection(0);//参数值越大,光标位置越靠后。



你可能感兴趣的:(android小知识3)