오늘은 만들었던 자기소개앱을 좀더 수정해보았다.
먼저 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는 앞으로도 많이 사용될거같아서 더 많이 사용해봐야겠다.