1. 程式人生 > >Android控制UI介面的三種方式

Android控制UI介面的三種方式

一、XML檔案控制UI介面
通過setContentView()方法繫結佈局檔案

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

Activity繫結的是activity_main.xml檔案,下面是activity_main.xml檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
tools:context="helloworld.yougel.com.helloworld.MainActivity">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </RelativeLayout>

這種方式簡潔方便,但靈活性不高。

二、程式碼控制UI介面

import android.graphics.Color;
import
android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; public class CodeCActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout linearLayout=new LinearLayout(this); //設定佈局的寬、高 linearLayout.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setBackgroundColor(Color.parseColor("#ff0000")); setContentView(linearLayout); Button button=new Button(this); button.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT )); button.setText("hello"); linearLayout.addView(button); } }

雖然程式碼的方式控制UI靈活性高,但步驟繁瑣,全部內容集中到程式碼中不利於後期維護。

三、XML和程式碼混合方式控制UI介面
通過混合的方式,把那些固定或者變化不大的View在Xml中設計,而那些動態變化的就用程式碼來實現

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class ImageSwitchActivity extends AppCompatActivity {

    int[] images{R.mipmap.one,
                 R.mipmap.two,
                 R.mipmap.three,
                 R.mipmap.four};
    int currentImage=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_switch);
        LinearLayout root= (LinearLayout) findViewById(R.id.root);
        final ImageView imageView=new ImageView(this);
        imageView.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        ));
        imageView.setImageResource(images[0]);
        root.addView(imageView);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imageView.setImageResource(images[currentIamge++%images.length]);
            }
        });
    }
}

下面是佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/root"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">
</LinearLayout>