天天看點

android界面開發小結——android筆記---控件和布局

控件簡介

==============================================================

控件的設定主要依靠layout檔案夾中的activity_main.xml設定

<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" >  

    <TextView  

        android:layout_width="wrap_content"  《寬。樣式屬性都是andoid:xxx="xxx"格式。wrap_content自适應内容寬度。fill_parent自填充父容器寬度。match_parent  

        android:layout_height="wrap_content"  

        android:layout_centerHorizontal="true"   

        android:layout_centerVertical="true"  

        android:padding="@dimen/padding_medium" 《@表示引用values檔案夾dimen.xml中的資料/padding_medium屬性值  

        android:text="@string/hello_world" 《引用values檔案夾string.xml中的hello_world  

        tools:context=".MainActivity" />  

</RelativeLayout>  

其他重要屬性:

控件布局垂直:android:oriention="vertical"

添加id:android:id="@+id/name"

通過java代碼查找控件:R代表gen檔案夾中的R.java。記錄所有變量的位址。

super.findViewById(R.id.name)

 super.setContentView(layout.layoutParams)增加布局元件

樣式表的用法:

建立一個mystyle.xml,放入values檔案夾。

格式:

<xml xxx..>  

<resource>  

<style name="mystyle">  

<item name="android:textSize">12px</item>  

</style>  

</resource>  

引用:

在layout檔案夾中的程式.xml 增加:

android:style="@style/mystyle"即可

使用values檔案夾下strings.xml等中的 <string name="app_name">timemanager</string>值:

android:name="@string/app_name"

view 類。所有UI的父類。

android.widget是程式中所有元件類的父類

TextView類 文本控件。相當于網頁中的label

重要屬性

顯示成超連結:android:autoLink="web|email"

選中後即全選 selectAllOnFocus=“true”

Button 類 按鈕

 重要屬性:

EditText 可編輯文本框

重要屬性:

隻能輸入數字 android:numeric="interger"

密碼方式顯示:android:password="true"

限制字數: android:maxLength="20"

CheckBox 多選按鈕

代碼中but.setChecked(true)或者android:checked="true"

RadioButton和RadioGroup

android:checkedButton=“@+id/name”

另:

 必須用組包含單個的:

<RadioGroup 屬性>  

<RadioButton  屬性 />  

</RadioGroup>  

Spinner下拉清單

重要知識點

清單的提示資訊(在表頭):prompt。

 下拉清單選項:adapter

setAdapter()設定選項

onItemClickListener()點選事件

用layot定義多個下拉清單選項方法:

values中建立list_data.xml檔案

<string-array>  

<item >選項1</item>  

</string-array>  

然後在layout中的spinner設定android:entries="@array/list_data"

動态添加定義:

先layout中配置spinner的id:android:id="@+id/dyn_list"

配置 values中

<string-array name="dyn_list_info">  

<item >選項2</item>  

再activity中:

 private Spinner list;

 private ArrayAdapter <CharSequence> aa;

然後oncreate{}中添加:      

this.list=(Spinner) super.findViewById(R.id.dyn_list);  

     this.list.setPrompt("請選擇");  

     this.aa=ArrayAdapter.createFromResource(this, R.array.dyn_list_info, android.R.layout.simple_spinner_item);  

     this.list.setAdapter(aa);  

另外還可以通過 this.aa.setDropDownViewResource(android.R....)

來實作下拉表樣式修改完全利用程式設定下拉清單資料:

private List <CharSequence> al;

 然後oncreate{}中添加:

this.al=new ArrayList<CharSequence>();  

this.al.add(" 選1");  

this.al.add(" 選2");  

this.al.add(" 選3");  

this.list.setPrompt("請選擇");  

this.aa=ArrayAdapter.createFromResource(android.R.layout.simple_spinner_dropdown_item);  

        this.list.setAdapter(aa);  

 ImageView 圖檔控件

顯示圖檔的id:android:src=“@drawable/logo”

 代碼添加:setImageResource(R.drawable.logo)

ImageButton圖檔按鈕

ImageView的子類

TimePicker時間選擇器

重要知識:

CurrentHour目前時間。可以在代碼裡用set get。get出來的是int。

setIs24HourView(true) 可以設定24小時制

DatePicker日期選擇器  ==============================================================================

布局管理器

4大布局管理器:LinearLayout,FrameLayout,RelativeLayout,TableLayoutLinearLayout

LinearLayout 線性布局管理器:

動态設定

<setOrientaton(HORIZONTAL/VERTICAL)addView() 增加控件

ViewGroup.LayoutParams布局參數類

構造時候傳入長寬

ViewGroup.LayoutParams lp=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)  

FrameLayout 幀布局管理器

所有堆在左上角。不常用

TableLayout表格布局。最常用元件

基礎設定形式:

< TableLayout   

>  

<TableRow>  

<TextView />  

</TableRow>  

</TableLayout>  

TableLayout重要知識:

android:shrinkColumn="3"          <- 設定第三列為自動伸縮列

android:collapseColumns="1,2,3"   <-不顯示的列

android:background=""  <- 定義背景圖檔

2用表格行列顯示資料

姓名 位址 電話

張三 北京 11111

<TextView  

 android:layout_column="0" <-所屬第幾列  

 android:text="顯示文字"  

 android:gravity="center_horizontal" <- 預設水準居中  

 android:padding="8px" <- pad邊大小  

/>  

<TextView android:layout_column="2"/>  

3程式中依據資料動态顯示表格:

private String titleData[][] = new String[][] {  

   {  "姓名", "位址", "電話" },  

   { "張山", "景德鎮", "111111" },  

   { "李四", "南京", "2222"} }; // 定義要顯示的資料  

TableLayout layout = new TableLayout(this); // 定義表格布局  

  TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(  

    ViewGroup.LayoutParams.FILL_PARENT,  

    ViewGroup.LayoutParams.FILL_PARENT); // 定義布局管理器的參數  

  layout.setBackgroundResource(R.drawable.mldn_logo); // 定義背景圖檔  

  for (int x = 0; x < this.titleData.length; x++) { // 循環設定表格行  

   TableRow row = new TableRow(this); // 定義表格行  

   for (int y = 0; y < this.titleData[x].length; y++) {  

    TextView text = new TextView(this);  

    text.setText(this.titleData[x][y]); // 設定文本内容  

    row.addView(text, y); // 加入一個編号  

   }  

   layout.addView(row); // 向表格之中增加若幹個表格行  

  }  

  super.setContentView(layout, layoutParam); // 設定顯示  

RelativeLayout 相對布局

緊貼于某控件右邊(平行)android:layout_toRightOf="@id/xxxx"

緊貼于某控件下邊(平行)android:layout_toBelowOf="@id/xxxx"

類似有left top

LayoutInflater在dialog界面顯示控件(定制對話框)

LayoutInflater li=LayoutInflater.from(Demo,this);//定義

View myView=factory.inflate(R.layout.login.null);//載入模闆

再将dialog的程式.setView(myView).create();

日期對話框框:

DatePickerDialog

有new DatePickerDialog.OnDateSetListener()事件類

時間對話框

TimePickerDialog

new TimePickerDialog.OnTimeSetListener()事件類

進度對話框

ProgressDialog

顯示風格:STYLE_HORIZONTAL,SYTLE_SPINNER(環形)

setMessage()設定資訊

onStart()啟動對話框

setProgressStyle()設定樣式

show()快捷顯示

incrementProgressBy()設定最大增長值

setProgress()設定目前進度

匿名内部類通路方法外類要加final。

SeekBar元件拖動條滑塊父類是progressBar

主要事件:

onSeekBarChange 進度改變

onStartTrackingTouch 正在拖動

getProgress()獲得目前進度

setMax(9)可規定滑動條的幅度。

獲得視窗屬性:

WindowManager.layoutParams param=super.getWindow().getAtrributes();

parm.screenBrightness 就是一個可get和set的螢幕亮度屬性

super.getWindow().setAtrributes(param) 設定回去。

TextView.sertMovementMethod()設定文本控件可以滾動。

RatingBar 評分元件

getNumStars()獲得打分次數

getRating()目前級别 getStepSize()

setIsIndicator()是否可以打分設定

setNumStars()星星個數

setOnRatingBarChangeListener

Toast元件小提示tips

setGravity()可以顯示偏移位置

可用addView()添加圖檔等元件

ImageSwitcher 圖檔切換元件

ViewFactory接口。要實作 makeView

Toast.makeText().show();建立并顯示文本資源,設定顯示時間

設定動畫:s

setInAnimation(AnimationUtils.loadAnimations

(this,android.R.anim.fade_in))

TextViewSwitcher文本切換元件

Gallery 畫廊元件

必須使用Adapter接口。如SpinnerAdapter,BaseAdapter,SimpleAdapter

GridView 網格視圖

AnalogClock,DigitalClock模态時鐘和數字時鐘

Chronometer計時器※

start()

setFormat

stop

setBase複位、

計時器監聽:setOnChronometerTick

Vibrator震動

v=(Vibrator)super.getAppliction().getSystemService

(Service.VIBRATOR_SERVICE)

Main.this.v.vibrtate(new long[]{1000,10,100,100},0);

TabHost 标簽類

menu菜單 OptionsMenu,ContextMenu,SubMenu

OptionsMenu的重寫方法:

onCreateOptionsMenu(menu)

{

mi=MenuInflater(this);

mi.Inflate(R.menu.new_menu,menu)

return true;

}

onOptionsItemSelected(MenuItem item){

swtich(item.getItemId())

case exit :

....

onOptionsMenuClosed

onPrepareOptionsMenu // 顯示菜單前

 ContextMenu上下文菜單(長按)

registerForContextMenu(view);//綁定一個view的上下文菜單

AlertDialog彈出對話框

AlertDialog.Builder builder=new AlertDialog.Builder(this);

builder.setMessage("sdfsdf").setPositiveButton("是",監聽).setNegativeButton("否",監聽).create().show()h

或者setItems

繼續閱讀