>  기사  >  백엔드 개발  >  Android XML 파일에 사용된 샘플 코드에 대한 자세한 설명

Android XML 파일에 사용된 샘플 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-09 16:50:051906검색

Android XML 파일에 사용된 샘플 코드에 대한 자세한 설명

1. 레이아웃 파일: 레이아웃 디렉터리에서 널리 사용됩니다. 응용 프로그램에 대한 두 세트 또는 여러 레이아웃 세트, 예를 들어 새로운 디렉토리를 생성할 수 있습니다. 상황에 따라 적절한 레이아웃 파일이 필요하지만 동일한 인터페이스에 두 개의 다른 레이아웃 세트가 있어야 합니다. 파일의 파일 이름은 동일해야 하며 두 개의 다른 디렉토리에 배치되어야 합니다.

2. 그림 파일: drawable 디렉터리에는 버전 2.1부터 3개의 디렉터리로 나누어집니다.

drawable-hdpi는 WVGA(480×800)와 같은 고해상도 그림을 저장합니다. , FWVGA(480×854)

drawable-mdpi는 HVGA(320×480)와 같은 중간 해상도 사진을 저장합니다.

drawable-ldpi는 QVGA(240)와 같은 저해상도 사진을 저장합니다. ×320)

시스템은 기기의 해상도에 따라 해당 폴더로 이동하여 해당 사진을 찾습니다. ​

프로그램 개발 시 다양한 플랫폼과 화면과의 호환성을 위해서는 필요에 따라 각 폴더에 다양한 버전의 이미지를 저장하는 것이 좋습니다.

이 디렉터리에 준비된 그림을 넣을 수도 있고, 사용자 정의 XML 파일을 통해 원하는 그림을 구현할 수도 있습니다. 예를 들어, Shape_1.xml을 정의하고 다음 내용과 함께 drawable 디렉터리에 넣을 수 있습니다.

<shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="oval"> 
<!--android:shape="oval"表示所要绘制的图形是一个椭圆,默认是rectangle,长方形-->
<gradient 
    android:startColor="#0055ff88" 
    android:centerColor="#0055ff00" 
    android:centerY="0.75" 
    android:endColor="#00320077" 
    android:angle="270" 
/> 
<!--gradient 产生颜色渐变 android:angle 从哪个角度开始变 只有90的整数倍可以 -->
<solid android:color="#ff4100ff"/> 
<!--solid表示图形是实心的,填充里面,#ff4100ff为填充颜色-->
<stroke 
    android:width="2dp"
    android:color="#ee31ff5e" 
    android:dashWidth="3dp" 
    android:dashGap="2dp" /> 
<!-- 描边 采用那样的方式将外形轮廓线画出来,width表示笔的粗细,dashWidth表示小横线的宽度,dashGap表示小横线之间的距离-->
<padding
    android:left="7dp"
    android:top="7dp"
    android:right="7dp" 
    android:bottom="7dp" /> 
<!--和CSS中的padding应该是一个道理-->
<corners android:radius="6dp" /> 
<!--corners表示是有半径为5像素的圆角-->
</shape>

다른 상태에 따라 다른 그림을 표시하는 컨트롤을 원할 경우 프로그램에서 직접 제어하거나 drawable 디렉터리에 XML 파일을 만들어 동일한 효과를 얻을 수 있습니다. .xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:state_pressed="false"android:drawable="@drawable/xxx1" />
    <item  android:state_pressed="true"  android:drawable="@drawable/xxx2" />
    <item  android:state_focused="true"  android:drawable="@drawable/xxx3" />
    <-- 这里还可以加N多效果和动作 只要你用的到 -->
    <item  android:drawable="@drawable/xxx4" />
</selector>

위의 XML 파일은 컨트롤(버튼으로 가정)을 구현하고, 포커스를 얻고, 버튼을 누르고, 다양한 그림의 효과를 표시할 수 있습니다. 일반적인 조건에서는 컨트롤을 정의할 때 파일 이름만 참조하면 됩니다. 예:

<Button
     android:id="@+id/Button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/button_add_x">
</Button>
<!--android:background="@drawable/button_back"指向button_back.xml文件-->

그러나 조건이 ImageView와 같이 시스템에 존재하는 이벤트 유형이 아닌 경우 어떻게 해야 합니까? 변수 var?의 값에 따라 다른 이미지를 표시합니다.

if (条件1)
{ 
image.setBackground(R.id.xxx1); 
}
else if (条件2)
{ 
image.setBackground(R.id.xxx2); 
} ...

프로그램에서 다음 코드를 작성할 수 있습니다. 또는 다른 간단한 방법을 사용하여 동일한 기능을 달성할 수 있습니다. res/drawable 아래에

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="9" android:drawable="@drawable/battery_0" />
    <item android:maxLevel="39" android:drawable="@drawable/battery_1" />
    <item android:maxLevel="69" android:drawable="@drawable/battery_2" />
    <item android:maxLevel="89" android:drawable="@drawable/battery_3" />
    <item android:maxLevel="100" android:drawable="@drawable/battery_4" />
</level-list>

내용으로 xml 파일을 만든 다음 레이아웃에서 imageview의 src를 생성된 xml 파일로 설정합니다. 프로그램에서 이미지를 변경할 때 imageview.getDrawable().setLevel(50)만 사용하면 됩니다.

Android는 다음에 따라 해당 이미지를 자동으로 선택합니다. 레벨의 가치. 휴대폰에서는 배터리 잔량을 표시할 때 다른 그림을 표시하기 위해 이 방법을 사용합니다.


3. 메뉴 파일: 메뉴 디렉터리에서 코드 작성 시 onCreateOptionsMenu 메소드에서 MenuInflater를 사용하여 로드하기만 하면 됩니다. 형식은 다음과 같습니다.

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/enabled_item"
        android:title="Enabled"
        android:icon="@drawable/stat_happy" />

    <item android:id="@+id/disabled_item"
        android:title="Disabled"
        android:enabled="false"
        android:icon="@drawable/stat_sad" />

    <item android:id="@+id/enabled_item_2"
        android:title="Enabled"
        android:icon="@drawable/stat_happy" />

    <item android:id="@+id/disabled_item_2"
        android:title="Disabled"
        android:enabled="false"
        android:icon="@drawable/stat_sad" />
</menu>

4. 리소스 파일은 value 디렉터리에 있습니다. value 디렉터리에 있는 xml 파일은 모두 리소스를 루트 노드로 갖고 있기 때문에 리소스 파일이라고 합니다.

 1 .strings.xml 문자열을 정의하는 파일, 형식은 다음과 같습니다.

<resources>
    <string name="hello">Hello World!</string>
    <string name="app_name">我的应用程序</string>
</resources>

2.colors.xml 색상을 정의하는 파일, 형식은 다음과 같습니다.

<resources>
    <!--定义图片颜色-->
    <drawable name="screen_background_black">#ff000000</drawable>
    <drawable name="translucent_background">#e0000000</drawable>
    <drawable name="transparent_background">#00000000</drawable>
    <!--定义文字颜色-->
    <color name="solid_red">#f00</color>
    <color name="solid_blue">#0000ff</color>
    <color name="solid_green">#f0f0</color>
    <color name="solid_yellow">#ffffff00</color>
</resources>

3.arrays.xml 배열을 정의하는 파일로, 형식은 다음과 같습니다.

<resources>
    <string-array name="planets">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
        <item>Pluto</item>
    </string-array>

    <integer-array name="numbers">
        <item>100</item>
        <item>500</item>
        <item>800</item> 
    </integer-array>
</resources>

4.styles.xml 스타일을 정의하는 파일은 두 가지 용도로 구분됩니다.

스타일: 단위 내 단일 XML 요소(컨트롤)의 레이아웃에 사용됩니다. 예를 들어 텍스트의 글꼴 크기와 색상을 포함하여 TextView의 스타일을 정의한 다음 이를 TextView의 특정 인스턴스에서 사용할 수 있습니다.

테마: 애플리케이션의 모든 활동 또는 애플리케이션의 특정 활동에서 하나의 단위로 사용됩니다. 예를 들어, 창 프레임과 패널의 전경과 배경에 대한 색상 세트를 정의하고 메뉴의 텍스트 가능한 크기와 색상 속성을 정의하는 테마를 정의할 수 있습니다. 이 테마는 프로그램의 모든 활동에 적용될 수 있습니다. .

<resources>
   <!--Theme,可以用来定义activity的主题-->
   <style name="Theme.Transparent">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
        <item name="android:windowBackground">@drawable/transparent_background</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:colorForeground">#fff</item>
    </style>
    <!--Style,可以用来定义某个View元素,这里是ImageView的样式-->
    <style name="ImageView120dpi">
        <item name="android:src">@drawable/stylogo120dpi</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
</resources>

개인적으로는 테마든 스타일이든 적용 범위가 다를 뿐이라고 생각합니다. android:name="xxxx"의 xxxx를 기준으로 구분해야 하는 것은 당연합니다. 다른.

5.dimen.xml 단위를 정의하는 파일 안드로이드에는 다음과 같은 측정 단위가 있습니다:

px(픽셀): 화면의 실제 픽셀, 일반적으로 사용되는 해상도는 1024*입니다. 768픽셀은 가로로 1024px, 세로로 768px를 의미합니다. 디스플레이 효과는 다른 장치에서도 동일합니다.

인치(인치): 화면의 물리적 크기로, 1인치는 2.54센티미터와 같습니다.

mm(밀리미터): 화면의 물리적 크기입니다.

 pt(포인트) : 화면의 물리적 크기. 1/72인치.

dp/dip: 밀도 독립적인 픽셀, 화면 밀도를 기반으로 하는 추상 단위입니다. 160dpi 모니터에서 1dp = 1px입니다. 그러나 dp와 px의 비율은 화면 밀도의 변화에 ​​따라 변하며, 장치마다 디스플레이 효과가 다릅니다.

sp: 크기와 관련이 없는 픽셀로 주로 텍스트와 관련된 크기 단위로 텍스트 크기에 가장 적합한 글꼴 표시에 사용됩니다.

<resources> 
    <dimen name="one_pixel">1px</dimen> 
    <dimen name="double_density">2dp</dimen> 
    <dimen name="sixteen_sp">16sp</dimen> 
</resources>

6.attrs.xml 속성을 정의하는 파일은 주로 커스텀 컴포넌트에서 사용됩니다. 구체적인 사용법은 이어지는 커스텀 컴포넌트 사용 방법에서 자세히 소개하겠습니다.

<resources>     
    <declare-styleable name="MyView">     
        <attr name="textColor" format="color" />     
        <attr name="textSize" format="dimension" />     
    </declare-styleable>     
</resources>

五、动画文件  在anim目录下,动画资源分为两种,

 

1.实现图片的translate、scale、rotate、alpha四种变化,还可以设置动画的播放特性,称为Tween动画。

<set xmlns:android="http://schemas.android.com/apk/res/android">               
    <translate android:interpolator="@android:anim/accelerate_interpolator"
         android:fromXDelta="0" android:toXDelta="200" android:fromYDelta="0"
         android:toYDelta="180" android:duration="2000" />
    <scale android:interpolator="@android:anim/accelerate_interpolator"
         android:fromXScale="1.0" android:toXScale="2.0" android:fromYScale="1.0"
         android:toYScale="2.0" android:pivotX="150%" android:pivotY="150%"
         android:duration="2000" />
    <alpha android:fromAlpha="1.0" android:toAlpha="1.0"
         android:duration="@android:integer/config_mediumAnimTime" />
    <rotate ....各个属性></rotate>
    <Interpolator >可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等</Interpolator>
</set>

 

2.帧动画,逐帧播放设置的资源,称为Frame动画。

<animation-list xmlns:android=”http://schemas.android.com/apk/res/android” 
android:oneshot=”true”> 
    <item android:drawable=”@drawable/rocket_thrust1″ android:duration=”200″ /> 
    <item android:drawable=”@drawable/rocket_thrust2″ android:duration=”200″ /> 
    <item android:drawable=”@drawable/rocket_thrust3″ android:duration=”200″ /> 
</animation-list>

六、raw目录下的文件,是直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。一般为应用要用到的音频或视频文件等等

 

   要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。

七、xml目录下的文件,是程序中需要使用的普通xml文件。在运行时可以通过调用Resources.getXML()读取。

八、assets目录下的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

  1. 先在Activity里面调用getAssets()来获取AssetManager引用。

  2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream。

  3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close()。

  4.调用AssetManager.close()关闭AssetManager。        


总结:其实android中定义如此多的XML配置文件,在我看来就是为了达到显示层和数据层的分离,提高了可维护性,也是我们的程序代码变得简洁。


위 내용은 Android XML 파일에 사용된 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.