android介面開發小結——android筆記---控制元件和佈局
控制元件簡介
==============================================================
控制元件的設定主要依靠layout資料夾中的activity_main.xml設定
[html] view plaincopyprint?- <RelativeLayoutxmlns: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
- 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資料夾。
格式:
[html] view plaincopyprint?- <xml xxx..>
- <resource>
- <stylename="mystyle">
- <itemname="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”
另:
必須用組包含單個的:
[html] view plaincopyprint?- <RadioGroup 屬性>
- <RadioButton 屬性 />
- </RadioGroup>
Spinner下拉列表
重要知識點
列表的提示資訊(在表頭):prompt。
下拉列表選項:adapter
setAdapter()設定選項
onItemClickListener()點選事件
用layot定義多個下拉列表選項方法:
values中新建list_data.xml檔案
[html] view plaincopyprint?- <string-array>
- <item>選項1</item>
- </string-array>
然後在layout中的spinner設定android:entries="@array/list_data"
動態新增定義:
先layout中配置spinner的id:android:id="@+id/dyn_list"
配置 values中
[html] view plaincopyprint?- <string-arrayname="dyn_list_info">
- <item>選項1</item>
- <item>選項2</item>
- </string-array>
再activity中:
private Spinner list;
private ArrayAdapter <CharSequence> aa;
然後oncreate{}中新增:
[java] view plaincopyprint?- 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 Spinner list;
private ArrayAdapter <CharSequence> aa;
private List <CharSequence> al;
然後oncreate{}中新增:
- this.al=new ArrayList<CharSequence>();
- this.al.add(" 選1");
- this.al.add(" 選2");
- this.al.add(" 選3");
- this.list=(Spinner) super.findViewById(R.id.dyn_list);
- 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佈局引數類
構造時候傳入長寬
[java] view plaincopyprint?- 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
- <TableRow>
- <TextView
- android:layout_column="0"<-所屬第幾列
- android:text="顯示文字"
- android:gravity="center_horizontal"<- 預設水平居中
- android:padding="8px"<- pad邊大小
- />
- <TextViewandroid:layout_column="2"/>
- <TextView/>
- </TableRow>
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