1. 程式人生 > >android介面開發小結——android筆記---控制元件和佈局

android介面開發小結——android筆記---控制元件和佈局

控制元件簡介

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

控制元件的設定主要依靠layout資料夾中的activity_main.xml設定

[html] view plaincopyprint?
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent">
  5.     <TextView
  6.         android:layout_width="wrap_content"  《寬。樣式屬性都是andoid:xxx="xxx"格式。wrap_content自適應內容寬度。fill_parent自填充父容器寬度。match_parent  
  7.         android:layout_height="wrap_content"
  8.         android:layout_centerHorizontal="true"
  9.         android:layout_centerVertical
    ="true"
  10.         android:padding="@dimen/padding_medium" 《@表示引用values資料夾dimen.xml中的資料/padding_medium屬性值  
  11.         android:text="@string/hello_world" 《引用values資料夾string.xml中的hello_world  
  12.         tools:context=".MainActivity"/>
  13. </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資料夾。

格式:

[html] view plaincopyprint?
  1. <xml xxx..>
  2. <resource>
  3. <stylename="mystyle">
  4. <itemname="android:textSize">12px</item>
  5. </style>
  6. </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”

另:

 必須用組包含單個的:

[html] view plaincopyprint?
  1. <RadioGroup 屬性>
  2. <RadioButton  屬性 />
  3. </RadioGroup>

Spinner下拉列表

重要知識點

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

 下拉列表選項:adapter

setAdapter()設定選項

onItemClickListener()點選事件

用layot定義多個下拉列表選項方法:

values中新建list_data.xml檔案

[html] view plaincopyprint?
  1. <string-array>
  2. <item>選項1</item>
  3. </string-array>

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

動態新增定義:

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

配置 values中

[html] view plaincopyprint?
  1. <string-arrayname="dyn_list_info">
  2. <item>選項1</item>
  3. <item>選項2</item>
  4. </string-array>

再activity中:

 private Spinner list;
 private ArrayAdapter <CharSequence> aa;

然後oncreate{}中新增:      

[java] view plaincopyprint?
  1. this.list=(Spinner) super.findViewById(R.id.dyn_list);  
  2.      this.list.setPrompt("請選擇");  
  3.      this.aa=ArrayAdapter.createFromResource(this, R.array.dyn_list_info, android.R.layout.simple_spinner_item);  
  4.      this.list.setAdapter(aa);  



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

來實現下拉表樣式修改完全利用程式設定下拉列表資料:

 private Spinner list;
 private ArrayAdapter <CharSequence> aa;

private List <CharSequence> al;


 然後oncreate{}中新增:

[java] view plaincopyprint?
  1. this.al=new ArrayList<CharSequence>();  
  2. this.al.add(" 選1");  
  3. this.al.add(" 選2");  
  4. this.al.add(" 選3");  
  5. this.list=(Spinner) super.findViewById(R.id.dyn_list);  
  6. this.list.setPrompt("請選擇");  
  7. this.aa=ArrayAdapter.createFromResource(android.R.layout.simple_spinner_dropdown_item);  
  8.         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佈局引數類

構造時候傳入長寬

[java] view plaincopyprint?
  1. ViewGroup.LayoutParams lp=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)  

FrameLayout 幀佈局管理器

所有堆在左上角。不常用

TableLayout表格佈局。最常用元件

基礎設定形式:

[html] view plaincopyprint?
  1. <TableLayout
  2. >
  3. <TableRow>
  4. <TextView/>
  5. </TableRow>
  6. </TableLayout>

TableLayout重要知識:
android:shrinkColumn="3"          <- 設定第三列為自動伸縮列
android:collapseColumns="1,2,3"   <-不顯示的列
android:background=""  <- 定義背景圖片
2用表格行列顯示資料

姓名 地址 電話
張三 北京 11111

[html] view plaincopyprint?
  1. <TableRow>
  2. <TextView
  3.  android:layout_column="0"<-所屬第幾列  
  4.  android:text="顯示文字"
  5.  android:gravity="center_horizontal"<- 預設水平居中  
  6.  android:padding="8px"<- pad邊大小  
  7. />
  8. <TextViewandroid:layout_column="2"/>
  9. <TextView/>
  10. </TableRow>

3程式中依據資料動態顯示錶格:

[java] view plaincopyprint?
  1. private String titleData[][] = new String[][] {  
  2.    {  "姓名""地址""電話" },  
  3.    { "張山""景德鎮""111111" },  
  4.    { "李四""南京""2222"} }; // 定義要顯示的資料
  5. TableLayout layout = new TableLayout(this); // 定義表格佈局
  6.   TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(  
  7.     ViewGroup.LayoutParams.FILL_PARENT,  
  8.     ViewGroup.LayoutParams.FILL_PARENT); // 定義佈局管理器的引數
  9.   layout.setBackgroundResource(R.drawable.mldn_logo); // 定義背景圖片
  10.   for (int x = 0; x < this.titleData.length; x++) { // 迴圈設定表格行
  11.    TableRow row = new TableRow(this); // 定義表格行
  12.    for (int y = 0; y < this.titleData[x].length; y++) {  
  13.     TextView text = new TextView(this);  
  14.     text.setText(this.titleData[x][y]); // 設定文字內容
  15.     row.addView(text, y); // 加入一個編號
  16.    }  
  17.    layout.addView(row); // 向表格之中增加若干個表格行
  18.   }  
  19.   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