記錄

사용자 인터페이스(UI) -2 본문

Mobile/Android

사용자 인터페이스(UI) -2

surhommejk 2018. 1. 11. 01:18

실습

1) 텍스트 내에서 autoLink 기능 사용

2) strings.xml에서 긴 텍스트 호출하여 원하는 줄 수만큼 출력 후 길면 요약

3) 폰트 변경

4) 이미지 뷰 출력 후 가로세로 비율 맞추도록 설정

5) EditText 뷰 출력하여 다이얼 패드로 전화번호 입력받기

6) 체크박스 출력 후 터치 시 이벤트 처리하여 텍스트 변경



.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
// LinearLayout으로 변경
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
// orientation은 vertical로 설정(기본은 horizontal)
tools:context="com.kimjungkwon.uitestfinal.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/intro" // strings.xml에 저장해둔 intro 호출
android:autoLink="phone|web|email"/> // autoLink로 클릭시 바로 이동할 수 있도록 처리

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/samplestring" // strings.xml에 설정한 samplestring을 호출
android:maxLines="4" // 최대 4줄 까지만 나오도록 함
android:ellipsize="end"/> // 끝에 ... 으로 줄여지도록 함

<TextView
android:id="@+id/fontTest" // 폰트 변경 처리를 위해서 id 값 부여
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Hello, X Mas!"/> // 짧으니까 stirngs.xml말고 직접 여기에 씀

<ImageView // 이미지 불러오기 위해서 ImageView 생성
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/tiger" // res/drawble에 저장해둔 이미지 파일을 똑같은 파일명으로 호출
android:adjustViewBounds="true" // 크기조정시 가로세로 비율 유지를 원하면 "true"
android:maxHeight="150dp"
android:maxWidth="150dp"
android:layout_marginTop="20dp"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone" // 키보드 입력 타입 설정. 숫자 다이얼 패드만 원하므로 phone
android:hint="전화번호 입력" // EditText 공간에 나와있다가 치면 없어지는 부분 hint
android:layout_marginTop="20dp"/>

<CheckBox
android:id="@+id/checkboxTest" // 클릭시 이벤트 처리를 위해서 id 값 부여
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="is unchecked" // 기본적으로 표시되어 있을 내용
android:layout_marginTop="20dp"/>

</LinearLayout>





Strings.xml

<resources>
<string name="app_name">UITestFinal</string>

<string name="samplestring">
미래 핵심 기술로 꼽히는 거래 내역 분산 저장, 즉 블록체인 방식도 이미 공개된 기술이라
6천만 원이면 새 이름의 가상화폐를 만들 수 있는데도 수천억 원 규모로 거래된다는 겁니다.
실제 입법화까지 규제에 대한 정부 부처 간의 이견을 어떻게 조정할지 법무부의 행보가 주목됩니다.
</string>

<string name="intro">
전화번호는 010-0000-0000이고 홈페이지는 www.google.com이고 메일은 abcde@gmail.com입니다.
</string>

</resources>





.java

public class MainActivity extends AppCompatActivity {

CheckBox cb;
// 전역변수로 설정한 이유는 후에 setOnChekedChangeListener에서 cb를 사용해야 하기 때문이다
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 폰트 적용
TextView tv = (TextView) findViewById(R.id.fontTest);
Typeface tf = Typeface.createFromAsset(getAssets(), "Baubles.ttf");
tv.setTypeface(tf);

// CheckBox 이벤트 처리
cb = (CheckBox) findViewById(R.id.checkboxTest);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) cb.setText("is checked");
else cb.setText("is unchecked");
}
});
// 조금 복잡하지만 일단 넘어가고 다음 장에서 학습
}
}






Comments