Android

Ctrl+Q:方法的幫助文檔
Ctrl+Alt+L:規範化代碼
Shift+F10:運行

Log.e:表示錯誤信息,好比可能致使程序崩潰的異常
Log.w:表示警告信息
Log.i:表示通常消息
Log.d:表示調試信息,可把程序運行時的變量值打印出來,方便跟蹤調試
Log.v:表示冗餘信息

Toast.makeText(MainActivity.this,"提示文字",Toast.LENGTH_SHORT).show();

String desc=String.format(「您勾選了控件%d,狀態爲%b",buttonView.getId(),isChecked);

天下難事必做於易,天下大事必做於細

Android支持的像素:px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(與設備無關的顯示單元)、dip(就是dp)、sp(用於設置字體大小)
經常使用的有px、dp和sp
px是手機屏幕上可顯示的最小單位,與物理設備的顯示屏有關
dp與物理設備無關,只與屏幕的尺寸有關(一樣尺寸的的屏幕以dp計量的分辨率是同樣的)
dp和px之間的聯繫取決於具體設備上的像素密度(像素密度就是DisplayMetrics裏的density參數,即1dp包含多少個px)
當density=1.0時,dp=px
當density=1.5時,2dp=3px;
當density=2時,1dp=2px;
sp專門用於設置字體
系統設置普通字體:dp和sp設置的字體同樣大
系統設置大字體:dp的文字大小不變,sp的字體卻變大了


用法:
1.在xml佈局文件中,sp用於設置文字,其他大小的地方用dp
2.在代碼中,Android用於設置大小的函數都以px爲單位
在代碼中使用dp時,得先把dp值轉換成px值,例
int dip_10=Utils.dip2px(this,10L);

Android中顏色值,由透明度和紅、綠、藍三原色定義,有八位十六進制數(FFEEDDCC,FF表示徹底不透明)和六位十六進制數(xml文件中默認不透明,代碼中默認透明)兩種編碼
系統中已定義的顏色常量:
BLACK:黑色
DKGRAY:深灰
GRAY:灰色
LTGRAY:淺灰
WHITE:白色
RED:紅色
GREEN:綠色
BLUE:藍色
YELLOW:黃色
CYAN:青色
MAGENTA:玫紅
TRANSPARENT:透明

用法:
1.在佈局文件中設置顏色值須要「#000000」,例:android:textColor="#000000";
佈局文件中用res/values/colors.xml,可「@color/常量名」
2.在代碼中能夠用「0xff00ff00」,例:setTextColor(0xff00ff00);也能夠經過Color.rgb(int red,int green,int blue)和Color.argb(int alpha,int red,int green,int blue);
代碼中使用功能/res/values/colors.xml,可getResources().getColor(R.color.常量名);

獲取手機的分辨率(當前屏幕的寬和高)
得到DisplayMetrics對象,而後從該對象中得到寬度、高度、像素密度等信息
DisplaryMetrics對象的經常使用屬性:
widthPixels:以px爲單位計量的寬度值
heightPixels:以px爲單位計量的高度值
density:像素密度,即1dp包含多少個px


用法:
public class DisplayUtil{
public static int getSreenWidth(Context ctx){
WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}

public static int getSreenHeight(Context ctx){
WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
DispalyMetrics dm = new DisplaryMetrics();
wm.getDefaultDisplay().getMetrics(dm);
return dm.heightPixels;
}

public static int getSreenDensity(Context ctx){
WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
DispalyMetrics dm = new DisplaryMetrics();
wm.getDefaultDisplay().getMetrics(dm);
return dm.density;
}

View:
是Android的基本視圖,全部控件和佈局都由View類直接或間接派生而來,故而View類的基本屬性和方法是各空間和佈局通用的。

用法:
1.xml文件中經常使用屬性:
id:該視圖的編號
layout_width:該視圖的寬度,能夠是dp值,也能夠是match_parent、match_content(若內容超過上一級視圖,該視圖保持和上一級視圖同樣寬,超出寬度的內容進行滾動才能顯示);
layout_height:該視圖的高度
layout_margin:該視圖與周圍視圖之間的空白距離(包括上、下、左、右)。另有layout_marginTop、layout_marginBottom、layout_marginLeft、layout_marginRight
minWidth:該視圖的最小寬度
minHeight:該視圖的最小高度
background:該視圖的背景(背景能夠是顏色或圖片)
layout_gravity:制定該視圖與上級視圖的對齊方式,可使用「|」把多種對齊方式拼接起來
對齊方式:
left:靠左對其
right:
top:
bottom:
center:
center_horizontal:水平方向居中
center_vertical:垂直方向居中
padding:指定該視圖邊緣與內部內容之間的空白距離。另有paddingTop、paddingBottom、paddingLeft、paddingRight。
visibility:該視圖的可見類型
visible:可見,默認值
invisible:不可見,但佔着位置
gone:消失,不可見且不佔位置

2.代碼中經常使用設置:
setMinimumWidth:設置該視圖的最小寬度
setMiniumHeight:設置該視圖的最小高度
setBackgroundColor:設置該視圖的背景顏色
setBackgroundResource:設置該視圖的背景
setBackgroundDrawable:設置該視圖的背景圖片
setPadding:設置該視圖邊緣與內部內容之間的空白距離
setVisibility:設置該視圖的可視類型
*setLayoutParams:設置該視圖的佈局參數

視圖組ViewGroup:
用法:
addView:往佈局中添加一個視圖
removeView:從佈局中刪除制定視圖
removeAllViews:刪除該佈局下的全部視圖

LinearLayout:線性佈局
繼承了View和ViewGroup類的全部屬性和方法,還有其特有的xml屬性


用法:
1.在xml文件中
orientation:制定線性佈局的方向(horizontal表示水平佈局,vertical表示垂直佈局,默認是水平佈局)
gravity:指定佈局內部視圖與本線性佈局的對齊方式,取值同layout_gravity
layout_weight:指定當前視圖的寬或高占上級線性佈局的權重
layout_weight並不是在當前LinearLayout節點中設置,而是在下級視圖的節點中設置

用法:
layout_weigth是指定的是當前視圖在寬度上的權重,layout_width就要同時設置爲0dp
2.在代碼中
setOrientation:(LinearLayout.HORIZONTAL表示水平方向...)
setGravity:

ScrollView:滾動視圖
與線性佈局相似,滾動視圖也分爲垂直方向和水平方向兩類
其中,垂直滾動的視圖名爲ScrollView,水平滾動的視圖名爲HorizontalScrollView。

垂直滾動時:layout_width要設置爲math_parent,layout_height要設置爲wrap_content
水平滾動時:layout_width要設置爲wrap_content,layout_hegith要設置爲match_parent

滾動視圖下面有且只能掛一個佈局節點

有時ScrollView的實際內容不夠,又想讓它充滿屏幕,設置layout_height爲match_parent,結果仍是不會充滿,正確的作法是再增長一行fillViewport屬性設置,例:android:fillViewport="true"


文本顯示視圖:TextView
經常使用的屬性:
text:設置文本內容
textColor:設置文本顏色
textSize:設置文本大小
textAppearance:設置文本風格,風格定義在res/styles.xml
gravity:設置文本的對齊方式

跑馬燈用法:
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee" //跑馬燈

Button:

1.單擊監聽用法:
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v){
if(v.getId()==R.id.btn_click){
Toast.makeText(ClickActivity.this,"您單擊了控件:"+((TextView)v).getText(),Toast.LENGTH_SHORT).show();
}
}
}

btn.setOnClickListener(new MyOnClickListener());
2.
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

public void onClick(View v){
if(v.getId()=R.id.btn_test)
Toast.makeText(MainActivity.this,"按下按鈕",Toast.LENGTH_SHORT).show();
}

btn.setOnClickListener(this);

Button文字周圍放置圖片
使用TextView就是實現,那麼基於TextView的Button天然可以實現

屬性:
drawableTop:指定文本上方的圖形
drawableBottom:指定文本下方的圖形
drawableLeft:指定文本左邊的圖形
drawableRight:指定文本右邊的圖形
drawablePadding:指定圖形與文本的間距

代碼中實現:
setCompoundDrawables:設置文本週圍的圖形。可分別設置左邊、上邊、右邊、下邊的圖形
setCompoundDrawablePadding:設置圖形與文本的間距

用法:
//onCreate()函數中的代碼片斷
drawable=getResouces().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight()); //必須設置圖片大小,不然不顯示圖片

//點擊事件中能夠添加的代碼
btn_test.setCompoundDrawables(drawable,null,null,null);

ImageView: 圖像顯示控件

屬性:
scaleType:指定圖形的拉伸類型,默認是fitCenter
fitXY:拉伸圖片使其正好填滿視圖 (填滿ImageView)
fitStart:拉伸圖片使其位於視圖上部
fitCenter:拉伸圖片使其位於視圖的中部 (圖片被拉伸但未超出控件範圍)
fitEnd:拉伸圖片使其位於視圖的下部
center:保持圖片原尺寸,並使其位於視圖中間 (原圖顯示,圖片沒有拉伸)
centerCrop:拉伸圖片使其充滿視圖,並位於視圖中間 (圖片被拉伸且已超出控件範圍)
centerInside:使圖片位於視圖中間(只壓不拉)。當圖片尺寸大於視圖時,centerInside等同於fitCenter;當圖片尺寸小於視圖時,centerInside等同於center
src:指定圖形來源。
注意視圖不按scaleType指定的方式拉伸,背景默認以fitXY方式拉伸

代碼中用法:

setScaleType:
setImageDrawable:設置圖形的Drawable對象
setImageResource:設置圖形的資源id
setImageBitmap:設置圖形的位圖對象

使用截圖功能(這些方法都繼承自View類)

setDrawingCacheEnabled:設置繪圖緩存的可用狀態。true表示打開,false表示關閉
isDrawingCacheEnabled:判斷該控件的繪圖緩存是否可用
setDrawingCacheQuality:設置繪圖緩存的質量
getDrawingCache:獲取該控件的繪圖緩存結果,返回值爲Bitmap類型
setDrawingCacheBackgroundColor:設置繪圖緩存的背景顏色。
提供該方法是由於繪圖緩存默認背景色是黑色,若是不提早設置緩存的背景色,截圖的結果就是黑乎乎一片,因此須要將背景色設置爲默認顏色(一般是白色)

步驟:
1. setDrawingCacheEnabled(true); //先開啓繪圖緩存,以後變動的界面纔會記錄到緩存中;若是先變動界面再開啓繪圖緩存,緩存裏就是空
2. getDrawingCache(); //獲取繪圖緩存圖像數據
3. setImageBitmap(bitmap);
4. setDrawingCacheEnabled(false); //延遲若干毫秒後調用,關閉繪圖緩存
該方法寫在延時函數中,若是接下來還要截圖就再開啓繪圖緩存

延時函數:
private Handler mHandler = new Handler();
private Runnable mResetCache = new Runnable() {
@Override
public void run() {
iv_test.setDrawingCacheEnabled(false);
}
};

mHandler.postDelayed(mResetCache,200); //主程序中調用該函數延時

ImageButton圖像按鈕:
派生自ImageView,而不是派生自Button,只是ImageView有個默認的按鈕外觀
只能顯示圖形不能顯示文本
ImageButton上的圖像可按比例伸拉,而Button上的大圖會拉伸變形(由於背景圖沒法按比例拉伸)
Button能在背景顯示一張圖形,而ImageButton可分別在前景和背景顯示兩張圖形,實現圖片疊加效果

應用場景:
輸入法打不出來的字符和以特殊字體顯示的字符串,適合先切圖再用ImageButton顯示


項目目錄中的Drawable文件夾:

導入圖片:
1.直接複製到該項目目錄中
2.經過批量drawable插件Android Postfix Completion生成並導入各分辨率的圖片

Android把素有顯示的圖形都抽象爲Drawable(可繪製的)
這裏的圖形不止於圖片,還包括色塊、畫板、背景等

drawable-ldpi:存放低分辨率的圖片(如240*320)
drawable-mdpi:存放中等分辨率的圖片(如320*480),這樣的之智能手機已經不多了
drawable-hdpi:存放高分辨率的圖片(如480*800),通常對應4寸~4.5寸的手機,但也不絕對
drawable-xhdpi:高分辨率的圖片(如720*1280),通常對應5~5.5寸的手機
drawable-xxhdpi:超高分辨率的圖片(如1080*1920),通常對應6~6.5寸的手機
drawable-xxxhdpi:存放超高分辨率的圖片(如1440*2560),通常對應7寸以上的平板電腦

基本上,分辨率加大一級,寬度和高度就要加大二分之一或三分之一的像素。
若是各目錄中存在同名圖片,Android會根據手機的分辨率適配對應文件夾的圖片

代碼中用法:

1.使用setBackgroundResource和setImageResource方法,直接參數指定R.drawable.*
2.使用setBackgroundDrawable、setImageDrawable和setCompoundDrawables等方法,參數是Drawable對象
Drawable drawable=getResources().getDrawable(R.drawable.apple);

StateListDrawable: 狀態圖形,(部件不一樣狀態的控制)
該類是Drawable的一個子類,該子類在xml文件中定義了不一樣狀態時呈現圖形列表
不只用於Button控件,並且能夠用於其餘擁有不一樣狀態的控件

狀態類型屬性:
state_pressed:是否按下(true、false) 經常使用於Button
state_checked:是否勾選 經常使用於單選框RadioButton、複選框CheckBox
state_focused:是否獲取焦點 經常使用於文本編輯框EditText
state_selected:是否選中 各控件都可

//background的屬性能夠設置爲以下代碼
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/check_choose"/>
<item android:drawable="@drawable/check_unchoose"/>

</selector>

Shape:形狀圖形
定義文件以shape元素爲根節點。根節點下定義了6個節點:corners(圓角)、gradien(漸變)、padding(間隔)、size(尺寸)、solid(填充)、stroke(描邊)
實際開發經常使用的有3個節點:corners、solid、stroke。
shape節點的經常使用屬性:
rectangle:矩形,默認值
oval:橢圓,此時corners節點會失效
line:直線,此時必須設置stroke節點,否則會報錯
ring:圓環
corners時shape (若無corners節點,則表示麼有圓角)
bottomLeftRadius:像素類型,左下圓角的半徑
bottomRightRadius:右下圓角的半徑
topLeftRadius:左上圓角的半徑
topRightRadius:右上圓角的半徑
radius:圓角半徑(如有上面4個的定義,則不須要radius定義)
gradien: (描述形狀內部的顏色漸變定義,若無該節點,表示沒有漸變效果)
angle:整型,漸變的起始角度。爲0時表示是時鐘的9點位置,值增大表示往逆時針方向旋轉。例如:90表6點位置,180表3點位置
type:漸變類型
lincar:線性漸變,默認值
radial:放射漸變,起始顏色即便圓心顏色
sweep:滾動漸變,即一個線段以某個端點爲圓心作360度旋轉
centerX:浮點型,圓心的x座標。當android:type=「linear"時不可用
centerY:浮點型,圓心的y座標。當android:type=「linear"時不可用
gradientRadius:整型,漸變的半徑。當android:type="radial"時才須要設置該屬性
centerColor:顏色類型,漸變的中間顏色
startColor:顏色類型,漸變的起始顏色
endColor:顏色類型,漸變的終止顏色
useLevel:布爾類型,設置爲true無漸變色、false有漸變色
padding:描述形狀圖形與周圍視圖的間隔大小。若無該節點,則表示四周不設間隔
bottom:像素類型,與下邊的間隔
left:像素類型,與座標的間隔
right:像素類型,與右邊的間隔
top;像素類型,與上邊的間隔
size:用來表述形狀圖形的尺寸大小(寬度和高度)若沒有該節點,則表示寬高自適應
height:像素類型,圖形高度
width:像素類型,圖形寬度
solid:描述形狀圖形內部的填充色彩,若沒有該節點,表示無填充顏色
color:顏色類型,內部填充的顏色
stroke:描述形狀圖形四周邊線的規格定義,若無該節點,表示不存在描邊
color:顏色類型,描邊的顏色
dashGap:像素類型,每段虛線之間的間隔
dashWidth:像素類型,每段虛線的寬度
width:像素類型,描邊的厚度。若dashGap和dashWidth有一個值爲0,則描邊爲實線。

xml文件用法:
<shape xmls:android="http://schemas.android.com/apk/res/androd">
<solid android:color=#ffdd66"/>
<stroke
android:width="1dp"
android:color="#ffaabbcc"/>
<corners
android:bottomLeftRadius="10dp"
android:bottomLeftRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
</shape>

在界面中添加一個水平分割線:

1.在TextView控件中來內需填入許多橫線或下劃線
2.讓美工作一個橫線的切圖,而後ImageView控件塞進橫線圖
3.用Shape,根節點Shape屬性設置爲line
4.在佈局文件中添加View控件,高度設置爲1dp,背景顏色設置爲線條顏色 (最簡單)

九宮格圖片
實現原理與shape相似,即拉伸圖形時,只對內部進行拉伸,不對邊緣作拉伸操做
避免邊緣被拉寬、拉模糊的問題

使用到drawable9patch工具

計算器項目:
爲了減小冗餘代碼,可將相同的樣式定義寫在values目錄下的style.xml文件中,而後再佈局文件節點添加styl'e="@style/btn_cal」這樣的屬性
用法:
<style name="btn_cal">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/black</item>
<item name="android:textSize">30sp</item>
<item name=android:background">@drawable/btn_nine_selector</item>
</style>

相對佈局RelativeLayout:
下級視圖的位置是相對位置,若是不設定下級視圖的參照物,那麼下級視圖默認顯示再RelativeLayout內部的左上角
肯定視圖位置的參照物分兩種:
1.與該視圖自身平級的視圖
2.該視圖的上級視圖

屬性:
layout_toLeftOf:當前視圖在指定視圖的左邊
layout_toRightOf:當前視圖在指定視圖的右邊
layout_above:當前視圖在指定視圖的上方
layout_below:當前視圖在指定視圖的下方
layout_alignLeft:當前視圖在指定視圖的左側對齊
layout_alignRight:當前視圖在指定視圖的右側對齊
layout_alignTop:當前視圖與指定視圖的頂部對齊
layout_alignBottom:當前視圖與指定視圖的底部對齊
		layout_centerInParent:當前視圖在      上級視圖的中間		layout_centerHorizontal:當前視圖        在上級視圖的水平方向居中   (屏幕最上方中間)		layout_centerVertical:                          在上級視圖的垂直方向居中   (屏幕最左方中間)		layout_alignParentLeft:當前視圖         與上級視圖的左側對齊      (屏幕左上角)		layout_alignParentRight:		layout_alignParentTop:		layout_alignParentBottom:		與上級視圖的底側對齊    (屏幕左下角)	在代碼中動態添加視圖		用到的是RelativeLayout.LayoutParams的addRule方法,該方法第一個參數表示相對位置類型,第二個參數表示參照物視圖的id框架視圖FrameLayout:	其下級視圖沒法指定所處的位置,只能通通從上級FrameLayout的左上角開始添加,而且後面添加的子視圖會把以前的子視圖覆蓋掉	場景:		通常須要重疊顯示的場景,好比繪圖、遊戲界面等		屬性:		foreground:指定框架佈局的前景圖像。該圖像在框架內部永遠處於最頂層,不會被框架內的其餘視圖覆蓋		foregroundGravity:指定前景圖像的對齊方式。該屬性的取值同gravity絕對佈局AbsoluteLayout:表格佈局TableLayout:複選框CheckBox:	CompoundButton類是抽象的符合按鈕,由於是抽象的,因此不能直接使用。	實際開發中用到是CompoundButton類的幾個派生類,主要有複選框CheckBox、單選按鈕RadioButton以及開關按鈕Witch		CompoundButton類在佈局文件中的屬性:		checked:按鈕的勾選狀態,true表示勾選,false表示未勾選。默認未勾選		button:指定左側勾選圖標的圖形。若是不指定就使用系統的默認圖標。	CompoundButton在代碼中可以使用下列4中方法進行設置		setChecked:設置按鈕的勾選狀態		setButtonDrawable:設置左側勾選圖標的圖形		setOnCheckedChangeListener:設置勾選狀態變化的監聽器		isChecked:判斷按鈕是否勾選	複選框CheckBox經過setOnCheckedChangeListener方法設置勾選監聽器,對應的監聽器要實現接口CompoundButton.OnCheckedChangeListener。	開關按鈕Switch:	方方正正有點土	Android從4.1.2版本開始支持該控件。	起始Switch是一個高級版本的CheckBox,在選中與取消選中時可展示的界面元素比CheckBox豐富	屬性:		textOn:設置右側開始時的文本		textOff:設置左側關閉時的文本		switchPadding:設置左右兩個開關按鈕之間的距離		thumbTextPadding:設置文本左右兩邊的距離。若是設置了該屬性switchPadding屬性就會失效		thumb:設置開關軌道的背景		track:設置開關標識的圖標Android是實現相似於ios的開關按鈕	主要思路:		1.藉助狀態列表圖形StateListDrawable,首先定義一個狀態列表  			//background屬性能夠設置爲下面的代碼   (不直接修改button的屬性是由於其屬性是由限制的,不管多大的圖片,都只顯示一個小小的圖標)			<selector xmlns:android="http://schemas.android.com/apk/res/android">				<item android:state_checked="true" android:drawable="@drawable/switch_on"/>				<item android:drawable="@drawable/switch_off"/>			</selector>		2.button屬性要先設置爲@null單選按鈕RadioButton:	只能選擇一個,不能多選,按鈕範圍能夠經過RadioGroup容器來肯定	RadioGroup實質上是個佈局,同一組RadioButton都要放在同一個RadioGroup節點下	RadioGroup其下可掛其餘子部件,如TextView、ImageView等		RadioGroup屬性:			orientation:指定下級控件的排列方式		RadioGroup經常使用的方法:				setCheckedId:選中指定資源編號的單選按鈕			getCheckedRadioButtonId:獲取選中狀態單選按鈕的資源編碼			setOnCheckedChangeListener:設置單選按鈕勾選變化的監聽器	單選按鈕的選中事件通常不禁RadioButton處理,而由RadioGroup相應。	選中事件在實現時,首先要寫一個選中監聽器實現接口RadioGroup.OnCheckChangeListener,而後調用RadioGroup對象的setOnCheckedChangeListener	RadioButton常常會更換按鈕圖標		若是經過button屬性變動圖標,那麼圖標與文字就會挨的很近		爲了拉開圖標與文字之間的距離,得換成drawableLeft屬性展現新圖標(不要忘了把button屬性改成@null)此時再設置drawablePadding便可只當間隔距離圖標設置方式:	1.button:用於圖標大小要求不高,間隔要求也不高	2.background:用於可以較大空間顯示圖標的場合	3.drawableLeft:對圖標和文件之間的間隔有要求的場合下拉框Spinner:	屬性:		spinnerMode:設置爲dropdown,當前下拉框的正下方展現列表		spinnerMode:設置爲dialog,在頁面中部以對話框形式展現列表	代碼中調用的方法:		setPrompt:設置標題文字		setAdapter:設置下拉列表的適配器。適配器可選擇ArrayAdapter或SimpleAdapter		setSelection:設置當前選中哪項。注意此方法要setAdapter方法後調用		setOnItemSelectedListener:設置下拉列表的選中監聽器,該監聽器要實現接口OnItemSelectedListener數組適配器ArrayAdapter:			//spinner_item.xml		<?xml version="1.0" encoding="utf-8"?>		<TextView xmlns:android="http://schemas.android.com/apk/res/android"    			android:layout_width="match_parent"    			android:layout_height="match_parent"    			android:textSize="20sp"    			android:paddingLeft="20dp">		</TextView>		//item_dropdown.xml		設置彈出窗口的佈局方式		//使用			public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {    			Spinner spinner;  		 	@Override    			protected void onCreate(Bundle savedInstanceState) {        				super.onCreate(savedInstanceState);        				setContentView(R.layout.activity_main);        				spinner= findViewById(R.id.spinner_id);        				spinner.setPrompt("選項");        				ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.spinner_item,startArray);				adapter.setDropDownViewResouce(R.layout.item_dropdown);    //這個用來明確彈出窗口的佈局        				spinner.setAdapter(adapter);        				spinner.setSelection(0);        				spinner.setOnItemSelectedListener(this);    			}    			private String[] startArray={"火星","水星","木星"};    			@Override    			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {        				Toast.makeText(MainActivity.this,"您選擇的是"+startArray[position],Toast.LENGTH_SHORT).show();    			}    			@Override    			public void onNothingSelected(AdapterView<?> parent) {    			}		}SimpleAdapter:文本編輯框EditText:	沒有自動獲取文本編輯框長度的方法,可是能夠經過		public static int getMaxLength(EditText et){			int length=0;			try{				inputFilter[] inputFilters=et.getFilters();				for(InputFilter filter:inputFilters){					Class<?> c = filter.getClass();					if(c.getName().equals("android.text.InputFilter$LengthFilter")){						Field[] f = c.getDeclaredFields();						for(Field field: f){							if(field.getName().equals("mMax")){								field.setAccessible(true);								length = (Integer)field.get(filter);							}						}					}				}			}catch(Exception e){				e.printStackTrace();			}			return length;		}	屬性:		inputType:指定輸入的文本類型,指定多個類型能夠用「|」			text:文本			textPassword:文本密碼,顯示時用「*」替代			number:整型數			numberSigned:帶符號的數字,容許在開頭帶負號「-」			numberDecimal:帶小數點的數字			numberPassword:數字密碼,顯示時用*代替			datetime:時間日期格式,除了數字外,還容許輸入橫線、斜槓、空格、冒號			date:日期格式,除了數字外,還容許輸入橫線-和斜槓/			time:時間格式,除了數字外,還容許輸入冒號:		maxLength:指定文本容許輸入的最大長度		hint:指定提示文本的內容		textColorHint:指定提示文本的顏色				//更換編輯框的光標		cursorVisible:指定光標是否可見		textCursorDrawable,指定光標的圖像		//更換邊框		background:			@null:隱藏邊框						<selector xmlns:android="http://schemas.android.com/apk/res/android">				<item android:state_focused="true" android:drawable=@drawable/shape_edit_focus"/>				<item android:drawable="@drawable/shape_edit_normal「/>			</selector>		//自動隱藏輸入法		經常使用的作法時給該頁面的根節點設置focusable和focusableInTouchMode屬性,經過將這兩個屬性設置爲true可強制讓根節點得到焦點,避免輸入法自動彈出		編輯框文本達到指定長度時,自動關閉輸入法			1.得到容許輸入的最大長度,當輸入長度等於最大長度時,即觸發關閉軟鍵盤				獲取輸入的最大長度的函數見上				監控當前已輸入的文本長度用到文本監聽器接口TextWatcher,其包含三個方法:					beforeTextChanged:在文本改變以前觸發					onTextChanged:在文本改變過程當中觸發					afterTextChanged:在文本改變以後觸發				輸入法經過系統服務INPUT_METHOD_SERVICE管理,因此隱藏輸入法也要經過該服務實現					方法1:						public static void hideAllInputMethod(Activity act){							InputMethodManager imm=(InputMethodManager)act.getSystemService(Context.INPUT_METHOD_SERVICE);							if(imm.isActive() == true){								imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);							}						}					方法2:						public static void hideOneInputMethod(Activity act,View v){							InputMethodManager imm = (InputMethodManager)act.getSystemService(Context.INPUT_METHOD_SERVICE);							imm.hideSoftInputFromWindow(v.getWindowToken(),0);						}		//輸入回車符自動跳轉(按下回車後,自動跳到下一個編輯框)			用到了文本監聽器接口TextWatcher,主要監聽用戶是否輸入回車符					private class jumpTextWatcher implements TextWatcher{				private EditText mThisView = null;				private View mNextView = null;				public JumpTextWatcher(EditText vThis,View vNext){					super();					mThisView = vThis;					if(vNext!=null){						mNextView = vNext;					}				}				@文本改變前				@文本發生改變								@Override				public void afterTextChanged(Editable s){					String str=s.toString;					if(str.indexOf("\r")>=0||str.indexOf("\n")>=0){ //發現回車符或換行符						mThisView.setText(str.replace("\r","").replace("\n","")); //去掉回車符或換行符						if(mNextView!=null){							mNextView.requestFocus();  //讓下一個視圖得到焦點,即將光標移動到下一個視圖							if(mNextView instanceof EditText){								EditText et = (EditText)mNextView;								//讓光標自動移到編輯框內部的文本末尾								//方式1、直接調用EditText的setSelection方法								et.setSelection(et.getText().length());								//方式2、調用Selection類的setSelection方法								//Editable edit=et.getText();								//Selection.setSelection(edit,edit.length());							}						}					}				}			}自動完成編輯框AutoCompleteTextView:	實現原理:		EditText結合監聽器TextWatcher與下拉列表Spinner,一旦監控到EditText發生改變,就會自動彈出適配好的文字下拉列表	屬性:		completionHint:設置下拉列表底部的提示文字		completionThreshold:設置至少輸入多少個字符纔會顯示提示		dropDownHorizontalOffset:設置下拉列表與文本框之間的水平偏移		dropDownVerticalOffset:設置下拉列表與文本框之間的垂直偏移		dropDownHeight:設置下拉列表的高度		dropDownWidth:設置下拉列表的寬度Android四大組件之一,Activity:	一個Activity表明一個頁面,Activity的onCreate方法是頁面的入口函數	調用startActivity方法能夠跳轉到下一個頁面	1.生命週期			onCreate:建立頁面。把頁面上的各個元素加載到內存中		onStart:開始頁面。把頁面顯示在屏幕上		onResume:恢復頁面。讓頁面在屏幕上活動起來,如開啓動畫、開始任務等		onPause:暫停頁面。讓頁面在屏幕上的動做停下來		onStop:中止頁面。把頁面從屏幕上撤下來		onDestroy:銷燬頁面。把頁面從內存中清除掉		onRestart:重啓頁面。從新加載內存中的頁面數據		打開頁面			onCreate--onStart--onResume		跳轉頁面			上一個頁面onPause--下一個頁面onCreate--onStart--onResume--上一個頁面onStop		從這個頁面返回的奧上一個頁面			下一個頁面onPause--上一個頁面onRestart--onStart--onResume--下一個頁面onStop--onDestroy		橫屏、豎屏切換			進行切換時都是原屏幕的頁面從onPause到onStop再到onDestroy一路銷燬,而後新屏幕的頁面從onCreate到onStart再到onResume一路建立而來	2.組成部分	3.工做原理	4.頁面間的消息傳遞
相關文章
相關標籤/搜索