控制UI介面的方法

2020-10-11 12:00:24

一、使用JAVA程式碼控制UI介面

在程式碼中控制UI介面可以分為以下三個步驟。

  1. 建立佈局管理器,可以是幀佈局、表格佈局、線性佈局,並且設定佈局管理器的的屬性,例如,為佈局管理器設定背景圖片等。
  2. 建立具體的元件,可以是TextView、ImageView、EditText和Button等任何Android提供的元件,並且設定元件的佈局和各種屬性。
  3. 將建立的具體元件新增到佈局管理器中。
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FrameLayout frameLayout=new FrameLayout(this);//建立幀佈局管理器
        frameLayout.setBackground(this.getResources().getDrawable(R.mipmap.two));//設定背景

        setContentView(frameLayout);//設定在Activity中顯示的frameLayout

        TextView text1=new TextView(this);
        text1.setText("在JAVA程式碼中控制UI介面");//設定顯示文字
        text1.setTextSize(TypedValue.COMPLEX_UNIT_PX,40);//設定文字大小,單位為畫素
        text1.setTextColor(Color.rgb(100, 100, 100));//設定文字的顏色
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                //設定佈局高度和佈局寬度
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );//建立儲存佈局引數的物件
        params.gravity = Gravity.CENTER;//設定為居中
        text1.setLayoutParams(params);//設定佈局引數
        frameLayout.addView(text1);//將text1新增到佈局管理器中
    }
}

二、使用XML和JAVA程式碼混合控制UI介面

xml檔案

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id = "@+id/layout"
    android:orientation = "horizontal"
    android:rowCount="3"
    android:columnCount="4"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
</GridLayout>

java檔案

public class MainActivity extends AppCompatActivity {

    private ImageView[] img = new ImageView[12];//宣告一個儲存ImageView元件的陣列
    private int[] imagePath = new int[]{
            R.mipmap.one,R.mipmap.two,R.mipmap.one,R.mipmap.two,
            R.mipmap.one,R.mipmap.two,R.mipmap.one,R.mipmap.two,
            R.mipmap.one,R.mipmap.two,R.mipmap.one,R.mipmap.two,
    };//宣告並初始化一個儲存存取圖片的陣列

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //網格佈局管理器
        GridLayout layout = findViewById(R.id.layout);//獲取XML檔案中定義的線性佈局管理器
        for(int i = 0;i<imagePath.length;i++){
            img[i] = new ImageView((MainActivity.this));//建立一個ImageView元件
            img[i].setImageResource(imagePath[i]);//為imageView元件指定要顯示的圖片
            img[i].setPadding(2,2,2,2);//設定imageView元件的內邊框
            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(116,68);//圖片大小
            img[i].setLayoutParams(params);
            layout.addView(img[i]);//加入佈局管理器中
        }
    }
}