Drawable의 aray를 xml 파일로 정의하여 보기 속성으로 읽기

14115 단어 Android
  • Drawable의aray를 xml 파일로 정의
  • aray를 보기 속성으로 설정
  • 이 두 가지 방법은 각각 검색해 보면 찾을 수 있다
    이걸 동시에 하면 2시간 정도 귀찮아서 적어놨어요.

    컨텐트


    ScrollView를 상속하는 개인 관점 ScrollDrawableView 만들기
    drawables라는 이름의 독특한 속성을 부여하다
    Drawables 속성을 Drawable의 aray로 설정하는 경우
    Aray의 내용을 ScrollView에 자동으로 펼치면 화면 스크롤을 통해 Drawable의 이미지 파일을 볼 수 있습니다.
    완성되면 그렇습니다.화면을 스크롤하여 이미지를 볼 수 있습니다.

    Drawable의 aray xml 파일


    res/drawable에 a.png에서 u.pg로 표시됩니다.drawables라는 이름의 아리에는 <item>@drawable/a</item>와 항목만 열거되어 있으니 일단 써 보세요.
    arrays.xml
    
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <array name="pictures">
            <item>@drawable/a</item>
            <item>@drawable/b</item>
            <item>@drawable/c</item>
            <item>@drawable/d</item>
            <item>@drawable/e</item>
            <item>@drawable/f</item>
            <item>@drawable/g</item>
            <item>@drawable/h</item>
            <item>@drawable/i</item>
            <item>@drawable/j</item>
            <item>@drawable/k</item>
            <item>@drawable/l</item>
            <item>@drawable/m</item>
            <item>@drawable/n</item>
            <item>@drawable/o</item>
            <item>@drawable/p</item>
            <item>@drawable/q</item>
            <item>@drawable/r</item>
            <item>@drawable/s</item>
            <item>@drawable/t</item>
            <item>@drawable/u</item>
        </array>
    
    </resources>
    

    사용자 정의 속성을 정의하는 xml 파일


    attrs.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <declare-styleable name="ScrollDrawableView">
            <attr name="drawables" format="reference" />
        </declare-styleable>
    
    </resources>
    
    declare-styleable의name는 무엇이든지 가능하며 이해하기 쉽도록 자신이 독립적으로 제작한 시야류의 유형명과 용도를 적는 것이 좋다.attr의format에는 문자열의string, 수치의integer 등 몇 가지 전용 값이 있는데 Drawable에는 이 값이 없기 때문에 선택reference합니다.
    이렇게 하면 자신의 속성을 정의할 수 있다.

    레이아웃 xml 파일


    응용 프로그램의 포장 이름은com이다.example입니다.
    MainActivity의 레이아웃에 사용되는 activitymain.xml.
    com.example.view.ScrollDrawableView는 ScrollView의 자체 제작 뷰를 상속합니다.
    activity_main.xml
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:custom="http://schemas.android.com/apk/res/com.example"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <com.example.view.ScrollDrawableView
            android:id="@+id/picker"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none"
            custom:drawables="@array/pictures" />
    
    </LinearLayout>
    
    고유 속성xmlns:custom="http://schemas.android.com/apk/res/com.example"을 사용하여 네임스페이스를 설정합니다.
    이렇게 하면 자신이 정의한 속성은custom이라는 이름 공간에서 사용할 수 있기 때문에 custom:drawables="@array/drawables"를 보기로 설정합니다.
    그런 다음 ScrollDrawarbleView 클래스에서 drawables 속성으로 지정된 aray의 Drawable 설정을 ImageView에 사용할 코드만 씁니다.

    독립형 뷰로 독립형 속성 해석하기


    구조기의 매개 변수AttributeSet attrs를 사용하여 설정된 속성에서 혼자 만든 속성을 찾아 이 속성의 값으로 지정된aray를 획득하는 절차입니다.
    중간에 나오기R.styleable.ScrollDrawableView_drawablesR.java에 자동 생성
    attr.xml로 정의된declare-styleable의name의ScrollDrawableView
    attra의name drawables는 ""를 참고하십시오.
    혼자 속성을 만들었을 때 마음대로 결정할 수 있기 때문에 조금 어려워요.
    ScrollDrawableView
    package com.example.view;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.drawable.Drawable;
    import android.util.AttributeSet;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.ScrollView;
    import com.example.R;
    
    public class ScrollDrawableView extends ScrollView {
        private final int ELEMENT_WIDTH_HEIGHT = getResources().getDimensionPixelSize(R.dimen.side_length);
        private final LayoutParams ELEMENT_LAYOUT_PARAMS = new LayoutParams(ELEMENT_WIDTH_HEIGHT, ELEMENT_WIDTH_HEIGHT);
    
        public ScrollDrawableView(Context context, AttributeSet attrs) {
            super(context, attrs);
    
            // ScrollViewは中に1つしかビューを持てないので、LinearLayoutの中にDrawableのarrayを入れていくことにする
            LinearLayout linearLayout = new LinearLayout(context);
            linearLayout.setOrientation(LinearLayout.VERTICAL);
    
            // ビューのdrawables属性の値として指定されている、drawableのarrayのリソースIDを取得
            TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ScrollDrawableView);
            int resourceId = typedArray.getResourceId(R.styleable.ScrollDrawableView_drawables, -1);
            typedArray.recycle();
    
            // arrayの中身のDrawableをImageViewにセットして使用
            TypedArray drawableArray = getResources().obtainTypedArray(resourceId);
            int length = drawableArray.length();
            for (int i = 0; i < length; i++) {
                Drawable drawable = drawableArray.getDrawable(i);
                ImageView imageView = new ImageView(context);
                imageView.setLayoutParams(ELEMENT_LAYOUT_PARAMS);
                imageView.setImageDrawable(drawable);
                linearLayout.addView(imageView);
            }
            drawableArray.recycle();
    
            addView(linearLayout);
        }
    }
    

    활용단어참조


    setContentView에 판면 디자인의 xml 파일을 설정했을 뿐이지만, 먼저 쓰십시오.
    MainActivity.java
    package com.example;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

    좋은 웹페이지 즐겨찾기