<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中提供的標準的控件,如TextView,CheckBox等等.不過自定義的控件一般也都是從標準控件繼承來的,或者是多種控件組合,或者是對標準控件的屬性進行改變而得到的自己滿意的控件.

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

     

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

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

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

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

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

        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);  
                //設置填充  
                mPaint.setStyle(Style.FILL);  
              
                //畫一個矩形,前倆個是矩形左上角坐標,后面倆個是右下角坐標  
                canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);  
              
                mPaint.setColor(Color.BLUE);  
                //繪制文字  
                canvas.drawText(mString, 10, 110, mPaint);  
            }
      
        

        代碼1定義了一個自定義控件,名字為MyView,是從View類繼承而來,也就是說它本身就是一種View,只是在View基礎上加工而成了我們自己的自定義控件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>標簽下使用<declare-styleable name="MyView">標簽來告訴框架它包含的屬性就是自定義控件MyView中的屬性.黃色的兩其實就對應了代碼1中黃色的變量.

     

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

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

        我們再看一下代碼1中的藍色代碼,其中使用AttributeSet來重載構造函數.在此函數中將類中的屬性變量與代碼二中定義的屬性聯系起來.

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

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

        我們看一下代碼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.

     

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

    轉載:
    http://www.cnblogs.com/zwl12549/archive/2011/04/13/2015366.html

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

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java

    搜索

    •  

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品白丝在线观看| 国产成人3p视频免费观看| 九九精品成人免费国产片| 国产精品福利片免费看| 国产精品高清全国免费观看| 免费无码又爽又刺激聊天APP| 亚洲免费视频播放| 亚洲w码欧洲s码免费| 在线看片韩国免费人成视频| 国产精品免费精品自在线观看| 黄+色+性+人免费| 亚洲精品动漫免费二区| 在线播放免费播放av片| 国产色爽免费无码视频| 国内精品久久久久影院免费| 日日麻批免费40分钟无码| 99re免费在线视频| 久久国内免费视频| 午夜电影免费观看| 亚洲成a人片在线观看老师| 国产专区一va亚洲v天堂| 免费观看美女裸体网站| 国产性生交xxxxx免费| 国产亚洲欧洲Aⅴ综合一区| 亚洲AV无码一区二区乱孑伦AS| 又黄又大又爽免费视频| 亚洲色图综合在线| 亚洲国产成人影院播放| 亚洲精品乱码久久久久66| 91久久亚洲国产成人精品性色| 亚洲视频在线观看2018| 青青视频免费在线| 男人进去女人爽免费视频国产 | 亚洲AV蜜桃永久无码精品| 在线视频观看免费视频18| 香蕉高清免费永久在线视频 | 性色av免费观看| 亚洲精品国产自在久久| 国产无遮挡吃胸膜奶免费看视频| 精品国产日韩亚洲一区| 亚洲精品在线免费观看视频|