一個Activity掌握Android4.0新控件

一個Activity掌握Android4.0新控件


歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380

谷歌在推出Android4.0的同時推出了一些新控件,Android4.0中最常用的新控件有下面5種。

1. Switch的使用


Switch顧名思義,就是開關(guān)的意思,有開和關(guān)兩種狀態(tài)。

當(dāng)Switch處于關(guān)閉狀態(tài)時:


當(dāng)Switch處于打開狀態(tài)時:

怎么在定義xml中定義Switch


        <Switch
        android:id="@+id/_switch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textOff="關(guān)閉"
        android:textOn="打開" />  
  • <code>android:textOff</code>屬性表示Switch關(guān)閉時顯示的文本
  • <code>android:textOn</code>屬性表示Switch打開時顯示的文本

怎么監(jiān)聽Switch的關(guān)閉,打開這兩個狀態(tài)的變化


        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","關(guān)閉Switch");
                }
            }
        });

2. Space的使用


Space顧名思義是空間的意思,表示該控件占據(jù)一定的空間,但是卻不顯示任何東西。

怎么使用Space


        <android.support.v4.widget.Space
        android:layout_width="match_parent"
        android:layout_height="60dp" />  

3. GridLayout的使用


GridLayout是指網(wǎng)格布局,GridLayout是為了彌補(bǔ)TableLayout的一些不足而推出來的。

  • TableLayout不能同時在水平和垂直兩個方向上對齊,因?yàn)門ableLayout繼承LinearLayout。
  • TableLayout中的元素不能跨行或者跨列,因?yàn)門ableLayout不能明確指出占多少行和多少列。

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不旋轉(zhuǎn)"
            android:onClick="rotate0"/>
        <Button android:text="TextureView旋轉(zhuǎn)45度"
            android:onClick="rotate45"/>
        <Button android:text="TextureView旋轉(zhuǎn)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的補(bǔ)充,它不像SurfaceView一樣創(chuàng)建特殊的窗口,它創(chuàng)建一個常規(guī)的View,TextureView可以設(shè)置移動,旋轉(zhuǎn),動畫等。
一個Textureview可以用來顯示內(nèi)容流。這樣的內(nèi)容流可以是視頻或OpenGL場景。內(nèi)容流可以來自于應(yīng)用程序的進(jìn)程以及遠(yuǎn)程進(jìn)程。Textureview只能用于硬件加速的窗口。當(dāng)渲染軟件,Textureview什么都不會畫。

怎么使用TextureView

使用Textureview很簡單:你需要做的就是得到它的SurfaceTexture。然后,SurfaceTexture可用于呈現(xiàn)內(nèi)容。
下面的示例演示如何渲染相機(jī)預(yù)覽到Textureview:
因?yàn)槭褂昧讼鄼C(jī),所以要在添加AndroidManifest.xml 文件中添加對應(yīng)的權(quán)限
<uses-permission android:name="android.permission.CAMERA"/>

public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener{
    private TextureView mTexture;
    private Camera mCamera;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTexture= (TextureView) findViewById(R.id.texture_view);
        //為mTexture設(shè)置表面結(jié)構(gòu)監(jiān)聽器
        mTexture.setSurfaceTextureListener(this);

    }

    /**
     * TextureView的SurfaceTexture準(zhǔn)備開始用
     */
    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        mCamera = Camera.open();
        try {
            //設(shè)置mCamera的表面結(jié)構(gòu)為surface
            mCamera.setPreviewTexture(surface);
            //啟動相機(jī)預(yù)覽
            mCamera.startPreview();
            //設(shè)置mTexture透明度
            mTexture.setAlpha(1.0f);
            //設(shè)置mTexture旋轉(zhuǎn)角度
            mTexture.setRotation(90.0f);
        } catch (IOException ioe) {
            // Something bad happened
        }

    }

    /**
     * SurfaceTexture的緩存大小改變了
     */
    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

    }

    /**
     * SurfaceTexture銷毀了
     */
    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
        mCamera.stopPreview();
        mCamera.release();
        return true;
    }

    /**
     * SurfaceTexture更新了
     */
    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surface) {

    }
}

xml文件中TextureView是這樣定義的

    <TextureView
        android:id="@+id/texture_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </TextureView>

注意:TextureView設(shè)置旋轉(zhuǎn)90度才是我們的正常視角。

6. 一個Activity掌握Android4.0新控件


為了方便學(xué)習(xí),本人將這5個新控件放到一個Activity中進(jìn)行使用。

  • 程序原始界面講解
  • 打開Switch開關(guān),點(diǎn)擊“打開POPUPMENU”彈出PopupMenu
  • 下面分別是TextureView旋轉(zhuǎn)0度(即不旋轉(zhuǎn)),旋轉(zhuǎn)45度,旋轉(zhuǎn)90度三種情況講解


本程序源代碼下載一個Activity掌握Android4.0新控件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,981評論 25 709
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,860評論 2 45
  • 問題描述 小易有一塊n*n的棋盤,棋盤的每一個格子都為黑色或者白色,小易現(xiàn)在要用他喜歡的紅色去涂畫棋盤。小易會找出...
    RobotBerry閱讀 670評論 0 0
  • 很奇怪—— 我們明明已經(jīng)在世道的最前線 卻總還以為有人會在我們之前 Photo by Hoang Thai
    憨憨爹閱讀 138評論 0 0
  • 已是黃昏獨(dú)自愁 仲春似暮秋 昨日枝頭花猶嬌 雷走風(fēng)過滿眼空寂寥 一生旅途雖孤獨(dú) 歸去也無數(shù) 階前落雨細(xì)細(xì)聽 滴碎點(diǎn)...
    楓橋遺夢閱讀 257評論 0 1

友情鏈接更多精彩內(nèi)容