『壹』 關於android界面組件的基本用法
1.文本框(TextView)和編輯框(EditText)
文本框(TextView)不允許用戶編輯文本內容,而編輯框(EditText)允許用戶編輯文本內容
2.按鈕(Button)和圖片按鈕(ImageButton)
Button顯示文字,ImageButton顯示圖片。
為ImageButton指定android:text屬性沒用,不會顯示文字
可以指定android:background為按鈕增加背景圖片,但這圖片是固定的
可以指定android:src為圖片按鈕增加圖片屬性
其實,src才是設置圖標,而background只是設置背景。
如果控制項的大小是100 100 圖片資源是80 80的話,那麼用src,圖片就會居中顯示,如果使用background那麼圖片就會被拉伸充滿控制項。
重要的是,background是底層的圖片資源,src是覆蓋在background上面的資源,他們可以疊加使用,實現選中的效果。
3.單選按鈕(RadioButton)和復選框(CheckBox)
多了一個android:checked屬性,用於指定初始時是否被選中
4.計時器組件Chronometer用法
紅色字體表示常用的方法
5.圖像視圖(ImageView)
它支持屬性android:scaleType setScaleType(ImageView.ScaleType)
matrix(ImageView.ScaleType.MATRIX):使用matrix方式進行
fixXY(ImageView.ScaleType.FIX_XY):對圖片橫向縱向獨立縮放,會改變縱橫比
fitStart(ImageView.ScaleType.FIT_START):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在左上角
fitCenter(ImageView.ScaleType.FIT_CENTER):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在中央
fitEnd(ImageView.ScaleType.FIT_END):保持縱橫比,圖片較長的邊長與ImageView相應的邊長相等,縮放後放在右下角
center(ImageView.ScaleType.CENTER):放中間,不縮放
centerCrop(ImageView.ScaleType.CENTER_CROP):保持縱橫比,使圖片能完全覆蓋ImageView
centerInside(ImageView.ScaleType.CENTER_INSIDE):保持縱橫比,使ImageView能完全顯示圖片
6.spinner的功能和用法
如果可以確定spinner裡面的列表項,那麼直接在/res/layout/main.xml裡面指定
然後在/res/value/string.xml裡面指定
如果不確定裡面的列表項,那麼必須要提供一個Adapter,這個Adapter負責決定Spinner列表每項的內容
7.日期、時間選擇器(DatePicker和TimePicker)
8.自動完成文本框(AutoCompleteTextView)
比普通文本框多了一個功能:當用戶輸入一定字元後,自動完成文本框會顯示一個下拉菜單,供用戶從中選擇,當用戶選擇某個菜單後,組件會按用戶選擇自動填寫該文本框
使用該組件很簡單,只要為它設置一個Adapter,該Adapter封裝了AutoCompleteTextView預設的提示文本
9.進度條(ProgressBar)
通過style屬性可以為ProgressBar指定風格。該屬性可以有如下的屬性值:
1.@android:style/Widget.ProgressBar.Horizontal 水平進度條
2.@android:style/Widget.ProgressBar.Inverse 不斷跳躍、旋轉畫面的進度條
3.@android:style/Widget.ProgressBar.Large 大進度條
4.@android:style/Widget.ProgressBar.Large.Inverse不斷跳躍、旋轉畫面的大進度條
5.@android:style/Widget.ProgressBar.Small 小進度條
6.@android:style/Widget.ProgressBar.Small.Inverse不斷跳躍、旋轉畫面的小進度條
ProgressBar提供如下方法來操作進度
1.setProgress(int) 設置進度的完成百分比
2.incrementProgressBy(int) 設置進度條的增加或減少。參數為正增加,參數為負減少
10.選項卡(TabHost)
TabHost僅僅只是一個簡單的容器,它提供如下方法
1.newTabSpec(String tag) 創建選項卡
2.addTab(TabHost.TabSpec tabSpec) 添加選項卡
使用TabHost的一般步驟為:
• A. 在界面中定義TabHost組件,並為該組件定義該選項卡的內容
• B. Activity應該繼承TabActivity
• C. 調用TabActivity的getTabHost()來獲取TabHost對象
• D. 通過TabHost對象的方法來創建選項卡、添加選項卡
選項卡主要由TabHost、TabWidget、FrameLayout3個組件組成,三者缺一不可,想像一下選項卡的特點,多個卡重疊在一起,所以用FrameLayout即幀布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三個組件的android:id必須使用系統默認的名稱,而不能自己隨意定義,否則會出錯。
11.圖像切換器(ImageSwitcher)
12.網格視圖(GridView)
使用GridView一般指定numColumn大於1,否則取默認值為1.那麼GridView就變成了ListView
屬性android:stretchMode支持如下屬性
1.none 不拉伸
2.spacingWidth 僅拉伸元素之間的間距
3.spacingWidthUniform 表格、元素之間的間距一起拉伸
4.columnWidth 僅拉伸表格
13.畫廊視圖(Gallery)(現在已經被棄用了,不過還是列出來吧)
Gallery用法很簡單——為它提供一個內容Adapter,該Adapter的getView方法所返回的View可作為Gallery的列表項。可以通過OnItemSelectedListener監聽選擇項的改變
14.列表試圖(ListView和ListActivity)
1.創建ListView由兩種方式:
2.直接使用ListView進行創建
讓Activity繼承ListActivity(繼承了ListActivity的類無需調用setContentView()來顯示頁面,可以直接設置適配器)
一旦獲得ListView後,就要創建顯示的列表項了。需要藉助內容Adapter,內容Adapter負責提供需要顯示的列表項
創建ArrayAdapter時必須指定一個textViewResourceId,該參數決定每個列表項的外觀
1.simple_list_item_1 每個列表項是普通的TextView
2.simple_list_item_2 每個列表項是普通的TextView(字體略大)
3.simple_list_item_checked 每個列表項是已勾選的列表項
4.simple_list_item_multiple_choice 每個列表項是帶多選框的文本
5.simple_list_item_single_choice 每個列表項是帶多單選按鈕的文本
15.使用AlertDialog
1.創建AlertDialog.Builder對象,該對象是AlertDialog的創建器
2.調用AlertDialog.Builder方法為對話框設置圖標、標題等
3.調用AlertDialog.Builder的create()方法創建AlertDialog對話框
4.調用AlertDialog的show()方法顯示對話框
16.使用Toast顯示提示框
步驟如下:
• 調用Toast構造器或makeText方法創建Toast對象
• 調用Toast方法來設置該消息的對齊方式等
• 調用Toast的show()方法顯示出來
• Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();
17.Notification(一般顯示網路狀態、電池狀態、時間等)
使用Notification發送Notification步驟:
• 調用getSystemService(NOTIFICATION_SERVICE)方法獲取系統的Notification Manager服務
• 通過構造器創建一個Notification對象
• 為Notification設置屬性
• 通過Notification Manager發送Notification
『貳』 android程序輸入框被輸入法彈出框遮蓋,滑動後留下白色背景,該背景該怎麼去掉。求大神指點
在清單文件AndroidManifest.xml中修改acitivty的windowInputMode為adjustPan即可
『叄』 App登錄界面----布局篇
我自學了3個月的Android基礎,居然一個App都做不出來。在我之前學的同時居然忘記了之前學的內容。所以我現在重新開始復習,這篇文章將是我復習的開始也是基礎的穩固,同時也是將來記不得了可以自我回顧的筆記。首先是從App登錄開始。
首先第一是布局,登錄界面布局那就要用到控制項,登錄界面所需控制項如下:
1.姓名 輸入框 密碼 輸入框:就要有Textview文本控制項 X 2, Editview輸入文本框控制項 X 2
2.立即注冊 忘記密碼 登錄 :就要有Button控制項 X 3
既然要布局就要有布局控制項:可以用RelativeLayout相對布局,LinearLayout線性布局,TableLayout表格布局,FrameLayout幀布局,AbsoluteLayout絕對布局。我要選用就就是前兩個布局:RelativeLayout相對布局或者LinearLayout線性布局。
這就是我最終預想所要達到的效果:
首先打開布局文件:展開app--->res--->layout--->activity_main.xml
切換到設計模式Design:
然後從調色板Palette就是控制項庫拖拽出所需控制項:
2個Textview,2個Editview ,3個Button.一開始布局控制項就是相對布局控制項,RelativeLayout相對布局控制項允許通過指定顯示對象相對於父容器或其他兄弟控制項的相對位置結合margin,padding來進行布局。
然後我們再切換迴文本模式Text:
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>這就組成了一個控制項。
再來解釋解釋RelativeLayout相對布局控制項是啥意思:
上圖所表現的意思就是RelativeLayout相對布局控制項的特點:TextView文本控制項基於父容器(RelativeLayout相對布局控制項)之下,再看圖:
它會自動添加默認屬性:android:text="文本控制項"//這是文本屬性可以輸入文字
android:textSize="50dp"//這是文本大小屬性是控制text屬性的大小
android:layout_width="wrap_content"//這是寬,選擇的自適應屏幕
android:layout_height="wrap_content"這是高。
android:layout_marginTop="253dp"// 重點就在這里了:在RelativeLayout相對布局下拖出的控制項會有這條屬性,意思是TextView相距父容器253dp的距離
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
好了我們繼續:我寫的這個布局呢?只用了兩個EditView控制項和三個Button控制項。先說EditView控制項。
拖拽出來改好了各種屬性但是和我的不一樣,哪裡不一樣?有邊框,邊框還是圓角。怎麼弄的?這是改變了它的樣式。首先目錄找到drawable文件按下Alt+lns鍵,點擊Drawable resource file
那就會彈出下面這個框框好創建資源文件,File name:這是資源文件的名字,Root element:這是需要創建什麼類型的資源文件。
假如沒有出現這個對話框而是另外的對話框就請更換模式
將Android 目錄模式切換成Project目錄模式
找到drawable文件重復上面操作就會出現
名字就自己取吧,類型選擇shape文件
這就是我為EditView設置的資源文件,那麼怎麼載入它呢?
用背景background屬性來載入:@drawable/border用@選擇文件位置載入就成功了。
文本框就做好了。噢!!!等等還有個屬性android:hint="登錄"還沒介紹,這是提示語:比如請輸入用戶名,請輸入密碼,這樣的提示語,只起到提示作用。範例:android:hint="請輸入用戶名"
好吧依次類推,Button按鈕也是這樣。我們先來看忘記密碼,立即注冊兩控制項這兩我沒這樣載入資源文件,我只用了3條屬性,
android:background="@null"//這條意思是背景設置路徑為空,作用是消除邊框。
android:shadowColor="#338AFF"//改變按鈕背景顏色,讓它看起來和相對布局背景融為一體。
android:textColor="#0066CC"//改變文字顏色
怎麼樣是不是和QQ登錄界面的差不多
那再來看立即登錄按鈕,這個按鈕我用了三個資源文件,為了讓按鈕按下抬起有一個變色效果,能夠反饋用戶視覺:您已按下按鈕。
首先看按下的資源文件:
這是按下的模樣,radius是設置圓角,然後是按下後的顏色。
再來看抬起:
這是抬起時候的樣子,圓角按下抬起都要設置一樣,不然按下是一個樣,抬起又是另一個樣子,然後是抬起的顏色。
這是兩個資源文件,如何讓按鈕呈現出按下抬起的不同效果呢?
就需要另一個資源文件來操控:selector資源文件
由他來控制這兩個資源文件:
<item/>這是資源文件的標簽,包括shape資源文件的:<corners/><solid/>都是標簽
標簽<item/>裡面
android:drawable="@drawable/clickroundedcolor"//是載入按下資源文件,
android:state_pressed="true"//true就是對,就是一個判斷作用,判斷是否按下,按下就載入按下的資源文件
然後再一個子標簽<item/>
<item android:drawable="@drawable/roundedcolor"/>也就是說當上面pressed不為true的時候執行下面這個標簽載入抬起狀態的效果。
這就做成了按下深藍抬起淺藍的顏色效果。那今天就到這里,復習到了什麼Editview Button控制項的使用然後在原來的基礎上學到了EditView 和Button控制項的UI設計一些細節效果。
還熟悉了Android studio。之前用Eclipse學習的Android,現在改用AS還特別不習慣,希望復習後我會熟練Android studio。恩,還有看到忘記密碼,立即注冊兩個按鈕是不是還會聯想到還有兩個布局。沒錯,忘記密碼和立即注冊這兩個布局文件,就不用記錄了,相信會了登錄主界面布局,其他兩個不在話下。
『肆』 Android布局優化的幾種方式
1. include/merge
布局優化中常常用到include/merge標簽,include的含義類似C代碼中的include,意思是直接把指定布局片段包含進當前的布局文件。include適用於多個布局文件中存在相同的xml片段,比如說相同的標題欄、相同的廣告欄、相同的進度欄等等。
2. ViewStub
在一個頁面上根據不同條件展示不同的控制項,我們常常會設置控制項的可視屬性,比如調用指定控制項的setVisibility方法,若需展示則設置View.VISIBLE,若需隱藏則設置View.GONE。不過gone的控制項只是看不到罷了,實際UI渲染時還是會被載入。要想事先不載入,在條件符合時才載入,就得用到標簽ViewStub。
3. style樣式
樣式在res/values/styles.xml中定義,它適用於下面幾種情況:
1、布局文件中存在多個具有相同風格的控制項,比如說統一的文本框TextView,都是白底黑字、中號字體、居中顯示,這時我們便可在styles.xml定義一種文本樣式,然後在各文本框處聲明它的style屬性。好處一個是減少了布局文件的大小,另一個是方便以後統一修改風格。
2、某些控制項在代碼中聲明時需要手工指定style,例如自定義對話框需要在構造函數中指定樣式;另一個例子是彈窗PopupWindow在設置伸縮動畫方法setAnimationStyle時需要指定動畫樣式。
3、定義頁面的主題風格,然後應用到Activity頁面。代碼中設置主題可通過「setTheme(R.style.)」完成,布局中設置可在AndroidManifest.xml的activity節點下添加theme屬性,如「android:theme=」@style/「」。
4. Theme主題
主題是一種特殊的樣式,主題專用於頁面,而樣式一般運用於控制項。主題定義一般放在themes.xml,樣式定義一般放在styles.xml。
Android定義了一些系統主題,完整定義的參見sdk自帶的themes.xml,常用的幾種說明如下:
Theme.NoTitleBar : 不顯示標題欄,即隱藏ActionBar
Theme.Light : 白色背景
Theme.Holo : 淺灰背景
Theme.Black : 黑色背景
Theme.Wallpaper : 壁紙
Theme.Translucent : 透明背景
Theme.Dialog : 對話框
Theme.Panel : 平板
Theme.InputMethod : 輸入法
Theme.SearchBar : 搜索框