一個Activity掌握Android4.0新控件 (轉)




原文地址: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新控件






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM