<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 93,  comments - 2,  trackbacks - 0
    所謂自定義控件(或稱組件)也就是編寫自己的控件類型,而非Android中提供的標(biāo)準(zhǔn)的控件,如TextView,CheckBox等等.不過自定義的控件一般也都是從標(biāo)準(zhǔn)控件繼承來的,或者是多種控件組合,或者是對標(biāo)準(zhǔn)控件的屬性進(jìn)行改變而得到的自己滿意的控件.

        自定義控件可能會有很多種方法,這里只介紹我要介紹的方法.

     

        在這種方法中,大概的步驟是這樣的

        1.我們的自定義控件和其他的控件一樣,應(yīng)該寫成一個類,而這個類的屬性是是有自己來決定的.

        2.我們要在res/values目錄下建立一個attrs.xml的文件,并在此文件中增加對控件的屬性的定義.

        3.使用AttributeSet來完成控件類的構(gòu)造函數(shù),并在構(gòu)造函數(shù)中將自定義控件類中變量與attrs.xml中的屬性連接起來.

        4.在自定義控件類中使用這些已經(jīng)連接的屬性變量.

        5.將自定義的控件類定義到布局用的xml文件中去.

        6.在界面中生成此自定義控件類對象,并加以使用.

     

        好了,按照上述的方法,我們來看看http://blog.csdn.net/Android_Tutor/archive/2010/04/20/5508615.aspx

        博客中的實例代碼,按步驟加以解釋:

        //---------------------------------------------------------------------------------

        1. 定義自己的控件類:--------------------------------------------代碼1.

        package com.android.tutor;  
        import android.content.Context;  
        import android.content.res.TypedArray;  
        import android.graphics.Canvas;  
        import android.graphics.Color;  
        import android.graphics.Paint;  
        import android.graphics.Rect;  
        import android.graphics.Paint.Style;  
        import android.util.AttributeSet;  
        import android.view.View;  

     
        public class MyView extends View
         
            private Paint mPaint;  
            private Context mContext;  
            private static final String mString = "Welcome to Mr Wei's blog";  
          
            public MyView(Context context)
             
                super(context);  
                mPaint = new Paint();  
             

     
            public MyView(Context context,AttributeSet attrs)  
             
                super(context,attrs);  
                mPaint = new Paint();  
              
                TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView);             
                int textColor = a.getColor(R.styleable.MyView_textColor,0XFFFFFFFF);  
                float textSize = a.getDimension(R.styleable.MyView_textSize, 36);  
              
                mPaint.setTextSize(textSize);  
                mPaint.setColor(textColor);  
              
                a.recycle();  
            }

       
            @Override
            protected void onDraw(Canvas canvas)

             
                // TODO Auto-generated method stub  
                super.onDraw(canvas);  
                //設(shè)置填充  
                mPaint.setStyle(Style.FILL);  
              
                //畫一個矩形,前倆個是矩形左上角坐標(biāo),后面?zhèn)z個是右下角坐標(biāo)  
                canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);  
              
                mPaint.setColor(Color.BLUE);  
                //繪制文字  
                canvas.drawText(mString, 10, 110, mPaint);  
            }
      
        

        代碼1定義了一個自定義控件,名字為MyView,是從View類繼承而來,也就是說它本身就是一種View,只是在View基礎(chǔ)上加工而成了我們自己的自定義控件MyView.在此類種黃色的兩行變量是我們新的屬性變量.

     

        //---------------------------------------------------------------------------------

        2. 在res/values目錄下建立一個attrs.xml的文件,并在此文件中增加對控件的屬性的定義--代碼2:

        <?xml version="1.0" encoding="utf-8"?>
        <resources>
            <declare-styleable name="MyView">
                <attr name="textColor" format="color" />
                <attr name="textSize" format="dimension" />
            </declare-styleable>
        </resources>

        在<resources>標(biāo)簽下使用<declare-styleable name="MyView">標(biāo)簽來告訴框架它包含的屬性就是自定義控件MyView中的屬性.黃色的兩其實就對應(yīng)了代碼1中黃色的變量.

     

        //---------------------------------------------------------------------------------

        3.使用AttributeSet來完成控件類的構(gòu)造函數(shù),并在構(gòu)造函數(shù)中將自定義控件類中變量與attrs.xml中的屬性連接起來.

        我們再看一下代碼1中的藍(lán)色代碼,其中使用AttributeSet來重載構(gòu)造函數(shù).在此函數(shù)中將類中的屬性變量與代碼二中定義的屬性聯(lián)系起來.

        //---------------------------------------------------------------------------------

        4.在自定義控件類中使用這些已經(jīng)連接的屬性變量.

        我們看一下代碼1中的黃色部分,就是對我們新定義的屬性的使用.

     

        //---------------------------------------------------------------------------------

        5.將自定義的控件類定義到布局用的xml文件中去.-----代碼3:

        我們再看看布局的xml文件代碼:

        <?xml version="1.0" encoding="utf-8"?>  
        <LinearLayout xmlns:android="
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"  
            <TextView android:layout_width="fill_parent"   
                android:layout_height="wrap_content"   
                android:text="@string/hello" />  

            <com.android.tutor.MyView  android:layout_width="fill_parent"   
                android:layout_height="fill_parent" app:textSize="20px" app:textColor="#fff" />  
        </LinearLayout>
        其中紅色部分在布局中引用了我們MyView控件.

     

        //---------------------------------------------------------------------------------

        6.在界面中生成此自定義控件類對象,并加以使用.--------代碼4.

     

        //---------------------------------------------------------------------------------

    轉(zhuǎn)載:
    http://www.cnblogs.com/zwl12549/archive/2011/04/13/2015366.html

    posted on 2015-04-14 10:53 Terry Zou 閱讀(328) 評論(0)  編輯  收藏 所屬分類: Android
    <2015年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java

    搜索

    •  

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 2015日韩永久免费视频播放| 国产亚洲精品欧洲在线观看| jiz zz在亚洲| 亚洲精品天堂成人片AV在线播放 | 亚洲综合图色40p| 久久噜噜噜久久亚洲va久| 亚洲国产精品久久久久秋霞影院| 国产精品亚洲自在线播放页码| 国产精品久久久久久亚洲影视| 亚美影视免费在线观看| 久久久久国色av免费看| 毛片免费观看的视频| 亚洲国产成人久久综合一区77 | 啊灬啊灬别停啊灬用力啊免费看| 亚洲精品无码日韩国产不卡?V| 久久精品国产精品亚洲色婷婷| 激情亚洲一区国产精品| 七次郎成人免费线路视频 | 久久久久久久国产免费看| 最近中文字幕mv免费高清在线| 日本特黄特黄刺激大片免费| 亚洲精品成人无码中文毛片不卡| 亚洲人成网网址在线看| 四虎一区二区成人免费影院网址| 亚洲国产精品免费视频| 国产成人精品免费直播| 亚洲福利视频导航| 婷婷亚洲综合五月天小说在线| 花蝴蝶免费视频在线观看高清版| 最近中文字幕mv免费高清电影| 青青草原亚洲视频| 99久久国产亚洲综合精品| 一区二区三区无码视频免费福利| 成人免费视频88| 亚洲av无码国产精品色午夜字幕| 亚洲AV无码之国产精品| 999任你躁在线精品免费不卡| 亚洲成a人片在线播放| 亚洲一卡二卡三卡四卡无卡麻豆| 国产免费牲交视频免费播放| 最新中文字幕电影免费观看|