1. main.xml


   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"        
android:gravity="center"
tools:context="com.example.mac.ikiker.MainActivity">

<Button
android:id="@+id/heightBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="키측정"
android:textSize="50dp"
/>

<Button
android:id="@+id/dustBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="미세먼지 측정"
android:textSize="50dp"
/>
</LinearLayout>


LinearLayout 뷰그룹의 속성 android:orientation 은 vertical 과 horizontal 두개의 속성을 가지며 뷰그룹에 지정된 속성은 하위 view 를 어떻게 보여줄 지를 결정합니다. 


gravity는 하위 view들의 위치를 결정해줍니다.


button의 속성의 순서는 임시지만

1. id

2. layout_width

3. layout_height

4. (padding or margin) <-- 생략가능

5. text

6. textSize (dp)


------------------------------------------------------------------------------------------------------------------








MainActivity.java
--------------------------------------------------------------------------------------------------------------------
package com.example.kimeunchan.storage;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

EditText mMemoEdit = null;
TextFileManager mTextFileManager = new TextFileManager(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mMemoEdit=(EditText)findViewById(R.id.editText);
}

public void onClick(View v) {
switch(v.getId()) {
// 1. 파일에 저장된 메모 텍스트 파일 불러오기
case R.id.load: {
String memoData = mTextFileManager.load();
mMemoEdit.setText(memoData);

Toast.makeText(this,"불러오기 완료", Toast.LENGTH_LONG).show();
break;
}
// 2. editText에 입력된 메모를 텍스트 파일(memo.text)에 저장하기
case R.id.save: {
String memoData = mMemoEdit.getText().toString();
mTextFileManager.save(memoData);
mMemoEdit.setText("");

Toast.makeText(this,"저장 완료", Toast.LENGTH_LONG).show();
break;
}
// 3. 저장된 메모 파일 삭제하기
case R.id.delete: {
mTextFileManager.delete();
mMemoEdit.setText("");

Toast.makeText(this,"불러오기 완료", Toast.LENGTH_LONG).show();
}

}
}
}
---------------------------------------------------------------------------------------------

TextFileManager.java


package com.example.kimeunchan.storage;

import android.content.Context;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
* Created by kimeunchan on 2017-02-26.
*/

public class TextFileManager {
private static final String FILE_NAME = "Memo.txt";
// 메모 내용을 저장할 파일 이름
Context mContext = null;

public TextFileManager(Context context) {
mContext = context;
}

// 파일에 메모를 저장하는 함수
public void save(String strData) {
if(strData == null || strData.equals("")) {
return;
}
FileOutputStream fosMemo = null;

try {
// 파일에 데이터를 쓰기 위해서 output 스트림 생성
fosMemo = mContext.openFileOutput(FILE_NAME,Context.MODE_PRIVATE);

// 파일에 메모 적기
fosMemo.write(strData.getBytes());
fosMemo.close();
}catch(Exception e) {
e.printStackTrace();
}
}

// 저장된 메모를 불러오는 함수
public String load(){
try{
// 파일에서 데이터를 읽기 위해서 input 스트림 생성
FileInputStream fisMemo = mContext.openFileInput(FILE_NAME);

// 데이터를 읽어 온 뒤 , String 타입 객체로 반환
byte[] memoData = new byte[fisMemo.available()];
while(fisMemo.read(memoData)!= -1) {}

return new String(memoData);
}catch (IOException e){}

return "";
}

// 저장된 메모를 삭제하는 함수
public void delete() {
mContext.deleteFile(FILE_NAME);
}
}
--------------------------------------------------------------------------------------------------
activity_main.xml
--------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kimeunchan.storage.MainActivity">

<Button
android:text="저장"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="34dp"
android:id="@+id/save"
android:layout_alignParentStart="true" />

<Button
android:text="불러오기"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:id="@+id/load"
android:layout_alignBaseline="@+id/save"
android:layout_alignBottom="@+id/save"
android:layout_toEndOf="@+id/save" />

<Button
android:text="삭제"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/load"
android:layout_alignParentEnd="true"
android:layout_marginEnd="11dp"
android:id="@+id/delete" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:hint="메모할 내용을 입력하세요."
android:id="@+id/editText"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/save"
android:layout_alignParentEnd="true" />
</RelativeLayout>


안드로이드 스튜디오를 처음 시작하면 작업 중 한글이 깨져서 출력되는 것을 확인하실 수 있으실 것입니다.

이는 안드로이드 스튜디오의 fonts.xml 파일을 수정하여 고칠 수 있습니다.


일단 안드로이드 스튜디오를 설치한 위치에서

Android Studio > plugins > android > lib > layoutlib > data > fonts

순으로 폴더를 들어가면 fonts.xml이라는 파일이 있을 것입니다.


대부분 C:\Program Files\Android\Android Studio\plugins\android\lib\layoutlib\data\fonts

로 들어가면 있으실 것입니다.


fonts.xml 파일을 열어 NotoSansCJK-Regular.ttc을 찾아 NanumGothic.ttf로 모두 바꿈니다.


바꾼 후 파일을 저장하면 엑세스가 거부되었다고 뜨는데 fonts.xml을 다른 곳으로 복사하여 수정한 후 붙여넣기하면 해결하실 수 있습니다.


이제, 안드로이드 스튜디오를 들어가면 한글 깨짐 현상이 나타나지 않습니다.



출처 : http://sausage14.tistory.com/7



+ Recent posts