天天看點

ImageButton一些總結

一.怎麼進行縮放填充圖像到ImageButton

android:scaleType="fitXY“

android:scaleType  設定圖像的填充方式

 fitXY             把圖檔不按比例擴大/縮小到View的大小顯示

說一下要注意的:

這麼做的話,如果控件的長寬比和圖像的長寬比不同的話就與比較嚴重的失真。是以要多注意一下.尤其是多分辨率适配的時候。多做真機調試

使用這個方法填充的時候是必須配合android:src來使用的。對于android:background是無效的.

android:src="@drawable/miss"  改為  android:background="@drawable/miss"

首先background是填充背景的屬性。指定後會根據ImageView元件給定的長寬進行拉伸。

而邊框的存在就是因為背景的存在。是以能替代第一種解決方案

(src是圖像内容(前景),background是背景,可以同時使用。)

二、背景漸變

在drawable建立一XML

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="​​​http://schemas.android.com/apk/res/android​​​"
    android:shape="rectangle">
    <gradient    //漸變
        android:startColor="#ff9bd0f3"
        android:endColor="#ff2558af"
        android:angle="225" />  //漸變角度,0度從左上開始逆時針 ,225度為右上角開始
    <corners android:radius="3dp" />   //角度
    <stroke android:width="5px" android:color="#000000" />  邊框
</shape>      

三、點選效果

1.點選動畫:

在drawable建立一XML

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="​​http://schemas.android.com/apk/res/android​​">
        <item
            android:state_pressed="true"
            android:state_enabled="true"
            android:drawable="@color/switch_thumb_normal_material_dark" />  //點選效果        <item
            android:state_enabled="true"
            android:drawable="@drawable/background_deepblue" />  //靜止效果
    </selector>      

Note: 預設狀态應該放到清單的最後,要不每次開始就固定為預設狀态而不會執行其他事件狀态

2.點選後圖檔不回彈(此處用代碼實作)

efaxHeadButton.setBackgroundResource(R.drawable.efax_tab_inbox); //set background image
        efaxHeadButton.setOnClickListener(new View.OnClickListener() {
            boolean isIconChange = false;
            @Override
            public void onClick(View v) {
                if (isIconChange) {     //when isIconChange is true,default image
                    efaxHeadButton.setBackgroundResource(R.drawable.efax_tab_inbox);
                    isIconChange = false;
                } else {   //when isIconChange is false,clicked image
                    efaxHeadButton.setBackgroundResource(R.drawable.efax_tab_inbox_p);
                    isIconChange = true;
                }
            }
        });

    }      

3.設定右上角消息提醒

使用嵌套

<RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            >
        <ImageButton
            android:id="@+id/myfaxpgage_head_button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:background="#ffebebeb"
            />
            <TextView
                android:id="@+id/myfaxpgage_head_message1"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:text="2"
                android:textSize="28sp"
                android:gravity="center"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:background="@drawable/textview"

                />
        </RelativeLayout>      
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <!-- android API裡有如下方法,但經測試隻有 rectangle有用,其他均在調用處空白
    <shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] > -->

    <solid android:color="#ffff3f29" />

    <corners android:radius="100dp" />


</shape>