安卓開發-圖標的使用以及圖形按鈕

在安卓界面的設計過程中,不免要使用許多圖標,例如返回,設置圖標等,本文記錄圖標的一些使用。


一、開源庫的使用

在我設計界面的時候,想要實現一個帶圖標的按鈕,那麼如何獲取需要的圖標成爲一個問題。

剛寫代碼的小白對GitHub並不熟悉,但是它真的是強大。使用一些開源的庫文件,可以對項目開發起到很大的幫助。首先拉出一個強大的連接,聚集了各類GitHub上的開源項目。Github上受歡迎的Android 開源 UI

其中,我使用這個庫,material-icon-lib,我也是剛開始用github,所以找一個使用說明比較詳細的,發現真的好用,添加依賴之後,更行一下gradle,然後就可以調用庫了。

二、Android studio的圖庫插件

在開發環境中安裝插件,然後就可以按需要使用圖標啦。首先是安裝插件:file->setting,點擊plugin,如下

在搜索中輸入Android Material Design Icon Generator,安裝插件,然後重啓軟件。

然後在res->drawable右鍵new,最下面能看到material design icon,點擊。(快捷鍵,鼠標放至res->drawable處,ctrl+alt+m),在界面中選擇圖標,設置顏色和大小,名稱,保存。然後就可以在需要用圖標的位置通過R.drawable.ic_name引用這個圖。

三、圖標按鈕的實現

有了可用圖標之後,現在製作一個帶圖標和文字的按鈕。使用textview控件可以很容易的實現。首先在layout文件中添加一個textview。

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:gravity="center"
        android:text="TextView" />

然後在其activity中引用這個控件,並添加圖標。

public class MainActivity extends AppCompatActivity {
    private TextView btn_icon;
    private Drawable drawable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //按鈕關聯
        btn_icon = findViewById(R.id.btn_icon);
        drawable = getResources().getDrawable(R.drawable.ic_settings_36dp);
        drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight()); //設置圖片的大小
        btn_icon.setCompoundDrawables(drawable,null,null,null);
        btn_icon.setText("設置");
        btn_icon.setTextSize(32);
    }
    
}

實現效果如下所示。

如實想實現一個較長的按鈕,並且改變圖標與文字之間的文字,可以通過改變圖片的起始位置以及文字與parent的距離,即setpadding實現。在上添加這兩行代碼,並讓佈局中的textview寬帶設定較大的值。

 drawable.setBounds(200,0,200+drawable.getMinimumWidth(),drawable.getMinimumHeight());
 btn_icon.setPadding(280+drawable.getMinimumWidth(),0,410,0);

可以得到這個效果

 四、小結

本部分記錄了使用圖標的兩種方式,然後用textview實現的一個圖形按鈕。它與普通按鈕一樣可以通過

btn_icon.setOnClickListener(systemSet);

進行點擊事件的監聽。

初寫博文,不足之處敬請諒解。如果有問題,歡迎問我。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章