[zz] Android 사용자 정의 View: 초기 인 스 턴 스

4390 단어 xmlandroid
본문 은 다음 과 같다.http://www.cnblogs.com/ufocdy/archive/2011/05/17/2048958.html
 
Android 사용자 정의 View 구현 은 간단 합 니 다.
View, 구조 함수 재 작성, onDraw, (onMeasure) 등 함 수 를 계승 합 니 다.
사용자 정의 View 에 사용자 정의 속성 이 필요 하 다 면 values 에서 attrs. xml 를 만들어 야 합 니 다.그 중에서 당신 의 속성 을 정의 합 니 다.
사용자 정의 View 에 사용 할 xml 레이아웃 파일 에 xmlns: 접두사 = "http://schemas.android.com/apk/res/사용자 정의 View 가 있 는 가방 경로 ".
사용자 정의 속성 을 사용 할 때 접두사: 속성 명, 예 를 들 어 my: textColor = "\ # FFFFF" 를 사용 합 니 다.
실례:
 
    package demo.view.my;   
    import android.content.Context;   
    import android.content.res.TypedArray;   
    import android.graphics.Canvas;   
    import android.graphics.Color;   
    import android.graphics.Paint;   
    import android.graphics.Paint.Style;   
    import android.util.AttributeSet;   
    import android.view.View;   
    /**  
     *        TextView.  
     *            onDraw    
     *       View           ,     xml           
     *            ,                 attrs.xml           
     *           ,   xml       。  
     *          ,     xml         schemas,  
     *      xmlns:my="http://schemas.android.com/apk/res/demo.view.my"  
     *   xmlns  “my”          ,res        View      
     * @author Administrator  
     *  
     */  
    public class MyView extends View {   
           
        Paint mPaint; //  ,        、              
        public MyView(Context context) {   
            super(context);   
               
        }   
           
        public MyView(Context context, AttributeSet attrs){   
            super(context, attrs);   
            mPaint = new Paint();   
            //TypedArray        context.obtainStyledAttributes           
            //      ,     recycle     
            //      styleable    +“_”+       
            TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);   
            int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00); //     ,        
            float textSize = array.getDimension(R.styleable.MyView_textSize, 36);   
            mPaint.setColor(textColor);   
            mPaint.setTextSize(textSize);   
               
            array.recycle(); //     ,                     
        }   
           
        public void onDraw(Canvas canvas){   
            super.onDraw(canvas);   
            //Canvas          ,      ,                
            //mPaint = new Paint();   
            //mPaint.setColor(Color.RED);   
            mPaint.setStyle(Style.FILL); //       
            canvas.drawRect(10, 10, 100, 100, mPaint); //       
               
            mPaint.setColor(Color.BLUE);   
            canvas.drawText("       ", 10, 120, mPaint);   
        }   
    }  

 
해당 속성 파일:
 
    <?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>  

 
레이아웃 파일 에서 의 사용:
    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
                  xmlns:my="http://schemas.android.com/apk/res/demo.view.my"    
        android:orientation="vertical"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        >  
           
        <demo.view.my.MyView  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"    
            my:textColor="#FFFFFFFF"    
            my:textSize="22dp"  
            />  
    </LinearLayout>  

좋은 웹페이지 즐겨찾기