리μμ€λ
: μ±μμ μ¬μ©νλ λ€μν λ―Έλμ΄ νμΌ, λ°μ΄ν° νμΌ λ±μ 리μμ€ νμΌμ΄λΌκ³ λΆλ₯Έλ€.
- μλλ‘μ΄λλ 리μμ€ νμΌλ€μ res ν΄λλ₯Ό ν΅ν΄ κ΄λ¦¬νλ€.
- μλλ‘μ΄λλ μ΄λ―Έμ§μ xmlνμΌμ 리μμ€λ‘ κ΄λ¦¬νλ©° xmlνμΌμ μλλ‘μ΄λμμ μ μν λ°μ΄ν°λ€μ κ΄λ¦¬νλ μ©λλ‘ μ¬μ©νλ€.
- xml νμΌλ‘ κ΄λ¦¬λλ λ°μ΄ν°λ€μ μΈμ΄, ν¬κΈ° λ±μ λ°λΌ λ¨λ§κΈ°μ λμν μ μλλ‘ μ²λ¦¬ν μ μλ€.
μλλ‘μ΄λμμ 리μμ€ νμΌμ μ¬μ©νκ³ μΆλ€λ©΄ R.(ν΄λλͺ ).(μ¬μ©νκ³ μΆμ 리μμ€νμΌ μ΄λ¦) μΌλ‘ νΈμΆ ν μ μλ€.
R.layout.activity_main
R.drawable.icon_next
R.string.app_name
λ¬Έμμ΄μ κ²½μ° κ³ μ λ λ¬Έμμ΄μ΄ μλ κ°μ μ¬μ©νκ³ μΆλ€λ©΄ resνμΌ μμ %s, %d, %f λ±μ μ¬μ©νμ¬ λ³κ²½ν μ μλ€.
// resource νμΌ
// %s : λ¬Έμμ΄, %d : μ μ, %f : μ€μ
// formatted="false" : λͺ¨λ μλλ‘μ΄λ λ²μ μμ μ¬μ© κ°λ₯νκ² νλ μ½λ
<resource>
<string name="introduce_name_age" formatted="false"> μλ
νμΈμ μ μ μ΄λ¦μ %sμ΄κ³ , λμ΄λ %dμ΄ μ
λλ€. λͺΈλ¬΄κ²λ %fkg μ
λλ€.</string>
</resource>
β
// μ¬μ©νλ κ³³
// λ¬Έμμ΄μ μμ£Ό μ¬μ©λκΈ° λλ¬Έμ getString("R.string.μ΄λ¦")μ μ 곡νμ§λ§
// μ 곡λμ§ μλ κ²λ€μ μ) resource.getString(κ°) μ μ¬μ©ν΄μΌνλ€.
val string = String.format(getString(R.string.introduce_name_age, "Jacob", 28, 80.0)
β
logfunction(string)
β
// μΆλ ₯ κ°
μλ
νμΈμ μ μ μ΄λ¦μ Jacobμ΄κ³ , λμ΄λ 28μ΄ μ
λλ€. λͺΈλ¬΄κ²λ 80.0kg μ
λλ€.
리μμ€ νμΌμμλ λ¨μλ³λ‘ μ μ₯ν μ μλ€. (px, dp, sp, mm, in, pt)
μ½λλ‘ νλ©΄μ μ΄λ€ κ°μ μ μ©μν¬ λλ pxλ‘ μ¬μ©νκΈ° λλ¬Έμ 리μμ€ νμΌμ λ¨μλ₯Ό μ μ₯μμΌλκ³ λ³ννμ¬ μ¬μ©νλ€.
<resource>
<dimen name="px">1px</dimen>
<dimen name="dp">1dp</dimen>
<dimen name="sp">1sp</dimen>
<dimen name="mm">1mm</dimen>
<dimen name="inch">1in</dimen>
<dimen name="pt">1pt</dimen>
</resource>
β
val px = resource.getDimension(R.dimen.px)
val dp = resource.getDimension(R.dimen.dp)
val sp = resource.getDimension(R.dimen.sp)
val mm = resource.getDimension(R.dimen.mm)
val inch = resource.getDimension(R.dimen.inch)
val pt = resource.getDimension(R.dimen.pt)
β
// μ€μ λ‘ μ½λλ‘ κ΅¬νν λ
// μ¬μ©νλ©΄ μλλ μ.
view_padding = 20
viewPager.setPadding(view_padding)
// κ²°κ³Όλ 20pxλ‘ μΈμλμ΄ λλ°μ΄μ€ ν¬κΈ°λ§λ€ λ¬λΌμ§
β
// μ¬λ°λ₯Έ μ
view_padding = resources.getDimension(R.dimen.dp).toInt() * 20
viewPager.setPadding(view_padding)
//κ²°κ³Όλ λλ°μ΄μ€ ν¬κΈ°λ³λ‘ 20dpλ‘ λ³νλμ΄ μΌμ κ°μ μ μ©μν¬ μ μμ
μΆλ ₯μ νκ²λλ©΄ κ°κ° λλ°μ΄μ€μ νλ©΄ ν¬κΈ°λ³λ‘ λ¨μλΉ λͺ pxμ μ¬μ©νλμ§ μ μ μλ€.
μ€μ λ‘ μ½λλ‘ νλ©΄ μ ꡬνν λ λ§μ΄ μ΄μ©νλ€.
μ΄λ―Έμ§λ‘ μ λλ©μ΄μ λ λ§λ€ μ μλ€. νΉμ μ΄λ―Έμ§λ₯Ό μ°μμ μΌλ‘ λ³κ²½ν μ μλ€.
// duration = 0.1μ΄ λ€μ λ€μ μ΄λ―Έμ§λ‘
// android:oneshot="true" λΌκ³ μ μνλ©΄ μ λλ©μ΄μ
μ΄ νλ²λ§ μλνκ³ λ©μΆ€.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true">
<item android:drawable="@drawable/ani_img1" android:duration="100"/>
<item android:drawable="@drawable/ani_img2" android:duration="100"/>
<item android:drawable="@drawable/ani_img3" android:duration="100"/>
<item android:drawable="@drawable/ani_img4" android:duration="100"/>
<item android:drawable="@drawable/ani_img5" android:duration="100"/>
<item android:drawable="@drawable/ani_img6" android:duration="100"/>
</animation-list>
μ½λλ‘ κ΅¬ννλ λ°©λ²μ
imageView.setImageResource(R.drawable.νμΌμ΄λ¦)
val animation = imageView.drawable as AnimationDrawable
ani.start() / ani.stop()
μΌλ‘ ꡬνν μ μλ€.
μ΄λ°μμΌλ‘ μ΄λ―Έμ§λ€μ λ§λ€μ΄ λμΌλ©΄ progressbar (λ‘λ©λ°)λ₯Ό μ§μ λ§λ€μ΄λ³Ό μ μλ€.
'Development > Android' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π¦Β Databindingμ μ°λ©΄μ - 2 (0) | 2022.09.08 |
---|---|
π¦Β Databindingμ μ°λ©΄μ - 1 (0) | 2022.09.08 |
μμ‘΄μ± μ£Όμ μ KoinπͺΒ λ λ’μ - 2 (0) | 2022.09.08 |
μμ‘΄μ± μ£Όμ μ Koinπͺ ν λ’μ - 1 (0) | 2022.09.08 |
Event Busπμ λ²μ€ μ’ λ°μλ³ΌκΉ? (0) | 2022.09.04 |