Android XML 파일에 사용된 샘플 코드에 대한 자세한 설명
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

OnLeaks는 이제 Android Headlines와 제휴하여 X(이전 Twitter) 팔로어로부터 4,000달러 이상의 수익을 창출하려는 시도가 실패한 지 며칠 후 Galaxy S25 Ultra에 대한 첫 번째 모습을 제공합니다. 맥락에 따라 h 아래에 포함된 렌더링 이미지

TCL은 두 가지 새로운 스마트폰을 발표하는 것과 함께 NXTPAPER 14라는 새로운 Android 태블릿도 발표했는데, TCL의 거대한 화면 크기는 판매 포인트 중 하나입니다. NXTPAPER 14는 TCL의 시그니처 브랜드인 무광택 LCD 패널 버전 3.0을 갖추고 있습니다.

Vivo Y300 Pro는 방금 완전히 공개되었으며 대용량 배터리를 갖춘 가장 얇은 중급 Android 휴대폰 중 하나입니다. 정확히 말하면 스마트폰의 두께는 7.69mm에 불과하지만 배터리 용량은 6,500mAh입니다. 최근 출시된 것과 동일한 용량이다.

최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

삼성전자는 팬에디션(FE) 스마트폰 시리즈를 언제 업데이트할지 아직 힌트를 주지 않았다. 현재 상태로 Galaxy S23 FE는 2023년 10월 초에 출시된 회사의 최신 버전으로 남아 있습니다.

Redmi Note 14 Pro Plus는 이제 작년 Redmi Note 13 Pro Plus(Amazon에서 현재 $375)의 직접적인 후속 제품으로 공식화되었습니다. 예상대로 Redmi Note 14 Pro Plus는 Redmi Note 14 및 Redmi Note 14 Pro와 함께 Redmi Note 14 시리즈를 주도합니다. 리

OnePlus의 자매 브랜드 iQOO는 2023-4년 제품 주기가 거의 끝날 수 있습니다. 그럼에도 불구하고 브랜드는 Z9 시리즈가 아직 끝나지 않았다고 선언했습니다. 최종이자 아마도 최고급인 Turbo+ 변형이 예상대로 발표되었습니다. 티
