幾種開發UI界面的方式demo Android

下面用demo說明: java

1.######## 用編程的方式開發UI界面 2014年5月13日 上午6:07 ##################android

/* 用編程的方式開發UI界面 */編程

// 建立一個線性佈局管理器canvas

LinearLayout layout = new LinearLayout(this);數組

// 設置Activity顯示layoutapp

super.setContentView(layout);ide

// 設置layout中的控件垂直排列函數

layout.setOrientation(LinearLayout.VERTICAL);佈局

// 建立一個TextView字體

final TextView tvShow = new TextView(this);

// 建立一個按鈕

Button btn = new Button(this);

btn.setText(R.string.ok);

btn.setLayoutParams(new ViewGroup.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,

ViewGroup.LayoutParams.WRAP_CONTENT));

// 向layout中添加TextView

layout.addView(tvShow);

// 向layout中添加按鈕

layout.addView(btn);

// 爲按鈕綁定一個監聽事件

btn.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

tvShow.setText("Hello , Android ," + new java.util.Date());

}

});

################### 用編程的方式開發UI界面 end ##################

2.### 使用xml佈局文件和java代碼混合控制UI界面 2014年5月13日 上午6:29 ###

/** 定義一個訪問圖片的數組 */

int[] images = new int[]

{ R.drawable.reader_king_logo, R.drawable.ic_launcher,

R.drawable.reader_king_logo, R.drawable.ic_launcher,

R.drawable.reader_king_logo };

/** 當前的imge下標 */

private int currentImg = 0;

。。。。。。。。。。

setContentView(R.layout.activity_main);

//獲取LinearLayout佈局容器

LinearLayout linearLayout = (LinearLayout)

findViewById(R.id.activity_main_ll_root);

//程序建立ImageView組件

final ImageView image = new ImageView(this);

//將ImageView組件添加到LinearLayout佈局容器中

linearLayout.addView(image);

//初始化時顯示第一張圖片

image.setImageResource(images[0]);

//設置ImageView的點擊事件

image.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

if(currentImg >= 4){

currentImg = -1;

}

//改變ImageView中顯示的圖片

image.setImageResource(images[++currentImg]);

}

});

### 使用xml佈局文件和java代碼混合控制UI界面 2014年5月13日 上午6:29 end ###

3.自定義view

在MainActivity.java中寫以下代碼:

Intent intent = new Intent();

intent.setClass(this, CustomViewActivity.class);

startActivity(intent);

下面是CustomViewActiviy.java的具體代碼:

package com.example.lganroid;


import android.app.Activity;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.LinearLayout;


/**

 * 實現跟隨手指的小球

 * 

 * @做者: 劉倩</br>

 * @時間: 2014年5月13日 上午7:05:53</br>

 * @描述: 自定義View的具體實現</br>

 */

public class CustomViewActivity extends Activity

{


@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// 加載佈局xml文件

setContentView(R.layout.activity_main);

// 獲取佈局文件的LinearLayout容器

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.activity_main_ll_root);

// 建立DrawView組件

final DrawView drawView = new DrawView(this);

// 設置自定義組件的最小寬度和高度

drawView.setMinimumWidth(300);

drawView.setMinimumHeight(500);

// 爲drawView組件綁定Touch事件

drawView.setOnTouchListener(new OnTouchListener()

{


@Override

public boolean onTouch(View v, MotionEvent event)

{

// 修改drawView的currentX和currentY兩個屬性

drawView.currentX = event.getX();

drawView.currentY = event.getY();

// 通知draw組件重繪

drawView.invalidate();

// 返回true表名處理方法已經處理改事件

return true;

}

});

// 將drawView組件添加到Linearlayout中

linearLayout.addView(drawView);

}

}

運行以後就能夠看到隨手指移動的自定義的小紅球。

4.自定義控件屬性(其一)

package com.example.lganroid;


import android.content.Context;

import android.content.res.TypedArray;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.Paint.Style;

import android.util.AttributeSet;

import android.view.View;


/**

 * 自定義控件的屬性

 * 

 * @做者: 劉倩</br>

 * @時間: 2014年5月13日 上午7:16:49</br>

 * @描述: 自定義控件的屬性,主要包括顏色和大小</br>

 */

public class CustomView extends View

{


/** 聲明畫筆 */

private Paint mPaint;

/** 要顯示的字符串 */

private String mText = "hello";


/**

* 有參構造函數

* @param context

*            上下文

* @param attrs

*            屬性

*/

public CustomView(Context context, AttributeSet attrs)

{

super(context, attrs);

// 初始化畫筆

mPaint = new Paint();

// TypedArray是存放資源的數組,經過上下文獲得這個數組,attrs是構造函數傳進來的,對應attrs.xml

TypedArray typedArray = context.obtainStyledAttributes(attrs,

R.styleable.CustomView);

// 得到xml裏定義的屬性,格式爲 名稱_屬性名 後面是默認值

int textColor = typedArray.getColor(R.styleable.CustomView_textColor,

0xFFFFFFFF);

float textSize = typedArray.getDimension(

R.styleable.CustomView_textSize, 35);

mPaint.setColor(textColor);

mPaint.setTextSize(textSize);

// 爲了保持之後使用該屬性一致性,返回一個綁定資源結束的信號給資源

typedArray.recycle();

}


@Override

protected void onDraw(Canvas canvas)

{

super.onDraw(canvas);

mPaint.setStyle(Style.FILL);

canvas.drawText(mText, 10, 60, mPaint);

}


}

在main.xml中的引用以下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:test="http://schemas.android.com/apk/res/com.example.lganroid"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >


    <com.example.lganroid.CustomView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        test:textColor="#f00"

        test:textSize="20sp" />

 </LinearLayout>

在attrs.xml中配置以下:

<?xml version="1.0" encoding="utf-8"?>

<resources>


    <declare-styleable name="CustomView">

        <attr name="textColor" format="color" />

        <attr name="textSize" format="dimension" />

    </declare-styleable>

</resources>


5.自定義控件屬性(其二)

package com.example.lganroid;


import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.util.AttributeSet;

import android.widget.Button;

import android.widget.LinearLayout;


/**

 * 自定義線性佈局

 * 

 * @做者: 劉倩</br>

 * @時間: 2014年5月13日 下午7:28:33</br>

 * @描述: 自定義線性佈局,在其中添加一個按鈕,並設置按鈕的文字,大小和顏色</br>

 */

public class CustomView2 extends LinearLayout

{

/** 按鈕顯示的文字 */

private String BtnText;


public CustomView2(Context context)

{

super(context);

}


public CustomView2(Context context, AttributeSet attrs)

{

super(context, attrs);

//聲明按鈕的id

int resourceId = -1;

//聲明按鈕

Button btn = new Button(context);

//從佈局文件得到按鈕的id

resourceId = attrs.getAttributeResourceValue(null, "BtnText", 0);

if(resourceId >0 ){

BtnText = context.getResources().getText(resourceId).toString();

}else{

BtnText = "";

}

btn.setText(BtnText);

//設置按鈕文字的顏色爲紅色

btn.setTextColor(Color.RED);

//設置按鈕中的字體大小爲18像素

btn.setTextSize(18);

//將按鈕加載到線性佈局中

addView(btn);

//設置佈局的排列方式爲垂直排列

this.setGravity(LinearLayout.VERTICAL);

}


@SuppressLint("NewApi")

public CustomView2(Context context, AttributeSet attrs, int defStyle)

{

super(context, attrs, defStyle);

}


@Override

protected void onDraw(Canvas canvas)

{

super.onDraw(canvas);

}


}

在main.xml中的配置:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:test="http://schemas.android.com/apk/res/com.example.lganroid"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <com.example.lganroid.CustomView2

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        BtnText="@string/app_name"

         />


</LinearLayout>

相關文章
相關標籤/搜索