Notes d'étude sur la vue personnalisée Android 1

Apprentissage de la vue personnalisée Android 1

1.Section 1

Introduction aux vues personnalisées

Les vues personnalisées peuvent être considérées comme héritant de View (ou d'effets) non fournis par le système View.

  1. Quand les constructeurs de View sont-ils appelés ?
    Insérer la description de l'image ici

  2. ** Méthode de mesure de vue personnalisée (onMeasure()) **

// Récupère les modes largeur et hauteur
int width = MeasureSpec.getMode(widthMeasureSpec);
int height = MeasureSpec.getMode(heightMeasureSpec;

//Trois modes
MeasureoSpec.AT_MOST : wrap_content est spécifié dans la mise en page
MeasureSpec.EXACTLY : une valeur exacte est spécifiée dans la mise en page telle que 100 dp
MeasureSpec.UNSPECIFIED : aussi grande que possible, rarement utilisée, lorsqu'elle est utilisée avec listview scrollview Utilisé

ScrollView + ListView affichera une solution incomplète au problème
Mesurez et calculez la hauteur, puis réinitialisez la hauteur (la solution de vue de liste personnalisée est comme indiqué ci-dessous)
Insérer la description de l'image ici

3.** Méthode de dessin de vue personnalisée (onDraw())**

canvas.drawText();       //画文本

canvas.drawArc();        //画弧

canvas.drawCircle();    //画圆

4.** Méthodes personnalisées de traitement des vues et d'interaction utilisateur (onTouch())**

三种状态
MotionEvent.ACTION_DOWN    //手指按下
MotionEvent.ACTION_MOVE    //手指移动
MotionEvent.ACTION_UP         //手指抬起

5.** Propriétés personnalisées de la vue personnalisée (pour la configuration)**

1. Définir dans le fichier attrs.xml
<resources>
    // 自定义TextView
    <declare-styleable name="TextView">
        // name 是名称,format是格式  color(颜色),string(文本),dimension(sp,dp)...
        <attr name="textColor" format="color"/>
        <attr name="text" format="string"/>
        <attr name="textSize" format="dimension"/>
    </declare-styleable>
</resources>
2. Utilisé dans les fichiers de mise en page
<com.darren.view.TextView
        // app: 自定义属性
        app:text="自定义文本"
        app:textColor="@color/colorAccent"
        app:textSize="18sp"
        // android: 系统自带的属性
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
3. Obtenez des propriétés personnalisées dans le code
public TextView(Context context) {
    this(context,null);
}

public TextView(Context context, AttributeSet attrs) {
    this(context, attrs,0);
}

public TextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    // 获取TypedArray
    TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.TextView);
    // 获取文本
    mText = typedArray.getText(R.styleable.TextView_text);
    // 获取文字颜色
    mTextColor = typedArray.getColorStateList(R.styleable.TextView_textColor);
    // 获取文字大小
    mTextSize = typedArray.getDimensionPixelSize(R.styleable.TextView_textSize,mTextSize);
    // 回收
    typedArray.recycle();
}

Je suppose que tu aimes

Origine blog.csdn.net/u010689434/article/details/111182150
conseillé
Classement