2023.12.20(수) TIL

quinones·2023년 12월 20일

오늘은 만들었던 자기소개앱을 좀더 수정해보았다.

String처리

먼저 xml,Activity상에 적어뒀던 모든 글자들을 res/drawable/values/strings.xml파일에 넣어줬다. 그 이유로는 앱이 미래에 다양한 언어로 번역이 필요할때를 위해, 그리고 많은 양의 글자들을 고치게 된다면 그때 더 편하게 하기 위해서 미리미리 습관을 들어놔야 한다고 한다.

먼저 각각의 화면에서 나오는 한글들을 바꾸기 위해서 values안에 액티비티의 이름으로 새로운stringx.xml파일을 만들어줬다. signinActivity를 예로 들면 sign_in_strings.xml파일을 만들어줬다.

<resources>
    <string name="sign_in_email">이메일</string>
    <string name="sign_in_login_fail">로그인 실패</string>
</resources>

그후에 xml에서의 사용법으로는

//android:text = "이메일" 
android:text="@string/sign_in_email"

android:text = "이메일" 이라고 적던 부분을 android:text="@string/sign_in_email" 이렇게 고쳐주었다
Activity에서의 사용법으로는 Toast메세지에서 적던 부분을 고쳐주었는데, 우선 Toast메세지를 많이 불러서 따로 함수를 만들어준 후에, 파라미터로 해당 값을 받아왔다.

private fun message(value:Int){
    Toast.makeText(this, getString(value), Toast.LENGTH_SHORT).show()
}

그리고 아래와 같이 사용해주었다.

message(R.string.sign_in_login_fail)

이런 방식으로 모든 액티비티와 xml에서 사용하는 text들을 strings.xml파일에 담아서 사용하였다.

버튼 클릭시 색/이미지 변경

현업에서는 버튼이 클릭될때 이미지를 바꾼다거나, 버튼색을 바꾼다거나, 이렇게 많이 사용한다고 한다. 그래서 해당 내용을 공부해 적용시켜보았다.

먼저 xml에서 Button으로 만들던 부분을 그냥 layout으로 만들어주었고, 그 안에 imageView와 TextView를 horizontal-packed를 사용해서 묶어주었고, 중앙에 배치시켜주었다.

여기서 배경색은 background="노란색"이런식으로 설정하지 않고,

android:background="@drawable/selector_btn"

이렇게 새로운 selector를 만들어서 선언해주었다. 해당 내용은

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/red"/>
            <corners android:radius="50dp"/>
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/yellow"/>
            <corners android:radius="50dp"/>
        </shape>
    </item>
</selector>

이렇게 만들어줬다.
shape은 rectangle, -사각형으로 만들어줬고, radius는 각 모서리를 둥글게? 해주는 내용이다. 이렇게 해서 버튼과 비슷한 모양으로 만들어줬고, solid속성을 이용해서 background를 미리 설정해둔 yellow컬러로 바꿔주었다.
이렇게가 평상시 적용되는 부분이고, item에 state_pressed="true"는 만약 눌려졌다면! 여기부분을 실행하라는 뜻이다. 그래서 선택된다면 배경색을 빨간색으로 바꿔주었다.

이미지도 바로 src에서 해당 이미지의 링크를 넣지않고

android:src="@drawable/selector_image"

같은방식으로 새로운 selector를 만들어주었다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/cry" android:state_pressed="true"/>
    <item android:drawable="@drawable/sad" android:state_focused="true"/>
    <item android:drawable="@drawable/smile"/>
</selector>

평상시에는 smile사진을, focused됐을때는 sad사진을, pressed됐을때는 cry사진을 넣어줬다.

오늘 새롭게 배운 string처리와 state_pressed는 앞으로도 많이 사용될거같아서 더 많이 사용해봐야겠다.

profile
이우진

0개의 댓글