原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380
谷歌在推出Android4.0的同時推出了一些新控件,Android4.0中最常用的新控件有下面5種。
1. Switch的使用
Switch顧名思義,就是開關的意思,有開和關兩種狀態。
當Switch處於關閉狀態時:
當Switch處於打開狀態時:
怎么在定義xml中定義Switch
<Switch
android:id="@+id/_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOff="關閉"
android:textOn="打開" />
android:textOff
屬性表示Switch關閉時顯示的文本android:textOn
屬性表示Switch打開時顯示的文本
怎么監聽Switch的關閉,打開這兩個狀態的變化
mSwitch= (Switch) findViewById(R.id._switch);
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Log.i("Switch","打開Switch");
}else{
Log.i("Switch","關閉Switch");
}
}
});
2. Space的使用
Space顧名思義是空間的意思,表示該控件占據一定的空間,但是卻不顯示任何東西。
怎么使用Space
<android.support.v4.widget.Space
android:layout_width="match_parent"
android:layout_height="60dp" />
3. GridLayout的使用
GridLayout是指網格布局,GridLayout是為了彌補TableLayout的一些不足而推出來的。
- TableLayout不能同時在水平和垂直兩個方向上對齊,因為TableLayout繼承LinearLayout。
- TableLayout中的元素不能跨行或者跨列,因為TableLayout不能明確指出占多少行和多少列。
GridLayout中元素常用的屬性
- android:layout_row : 固定顯示在第幾行。
- android:layout_column : 固定顯示在第幾列
- android:layout_rowSpan : 跨幾行
- android:layout_columnSpan: 跨幾列
怎么使用GridLayout
<GridLayout
android:id="@+id/grid_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:rowCount="2">
<Button android:text="打開PopupMenu"
android:onClick="openPopupMenu"/>
<Button android:text="TextureView不旋轉"
android:onClick="rotate0"/>
<Button android:text="TextureView旋轉45度"
android:onClick="rotate45"/>
<Button android:text="TextureView旋轉90度"
android:onClick="rotate90"/>
</GridLayout>
4. PopupMenu的使用
PopupMenu顧名思義是彈出菜單,它可以在一個控件的下面顯示彈出菜單。
在xml中定義彈出菜單
在menu資源目錄下面新建一個菜單的xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<item android:title="Switch" />
<item android:title="Space" />
<item android:title="GridLayout" />
<item android:title="PopupMenu" />
<item android:title="TextureView" />
</menu>
怎么顯示PopupMenu
public void openPopupMenu(View view){
//popupMenu顯示在view下面
PopupMenu popupMenu=new PopupMenu(this,view);
//從xml文件中加載菜單到popupMenu中
popupMenu.inflate(R.menu.popup_menu);
//顯示 popupMenu
popupMenu.show();
}
5. TextureView的使用
TextureView是SurfaceView的補充,它不像SurfaceView一樣創建特殊的窗口,它創建一個常規的View,TextureView可以設置移動,旋轉,動畫等。
一個Textureview可以用來顯示內容流。這樣的內容流可以是視頻或OpenGL場景。內容流可以來自於應用程序的進程以及遠程進程。Textureview只能用於硬件加速的窗口。當渲染軟件,Textureview什么都不會畫。
怎么使用TextureView
使用Textureview很簡單:你需要做的就是得到它的SurfaceTexture。然后,SurfaceTexture可用於呈現內容。
下面的示例演示如何渲染相機預覽到Textureview:
因為使用了相機,所以要在添加AndroidManifest.xml 文件中添加對應的權限 <uses-permission android:name="android.permission.CAMERA"/>
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener{private TextureView mTexture;
private Camera mCamera;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTexture= (TextureView) findViewById(R.id.texture_view);
//為mTexture設置表面結構監聽器
mTexture.setSurfaceTextureListener(this);
}
/** * TextureView的SurfaceTexture准備開始用 */@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mCamera = Camera.open();
try {
//設置mCamera的表面結構為surface
mCamera.setPreviewTexture(surface);
//啟動相機預覽
mCamera.startPreview();
//設置mTexture透明度
mTexture.setAlpha(1.0f);
//設置mTexture旋轉角度
mTexture.setRotation(90.0f);
} catch (IOException ioe) {
// Something bad happened
}
}
/** * SurfaceTexture的緩存大小改變了 */@Overridepublic void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
/** * SurfaceTexture銷毀了 */@Overridepublic boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mCamera.stopPreview();
mCamera.release();
return true;
}
/** * SurfaceTexture更新了 */@Overridepublic void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
}
xml文件中TextureView是這樣定義的
<TextureView android:id="@+id/texture_view"android:layout_width="match_parent"android:layout_height="match_parent">
</TextureView>
注意:TextureView設置旋轉90度才是我們的正常視角。
6. 一個Activity掌握Android4.0新控件
為了方便學習,本人將這5個新控件放到一個Activity中進行使用。
- 程序原始界面講解
- 打開Switch開關,點擊“打開POPUPMENU”彈出PopupMenu
- 下面分別是TextureView旋轉0度(即不旋轉),旋轉45度,旋轉90度三種情況講解
本程序源代碼下載一個Activity掌握Android4.0新控件