▶Do it! 안드로이드 앱 프로그래밍(정재곤 지음) 참조
1. MS로 문자를 전송하는 화면은 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치하도록 구성합니다.
2. 텍스트 입력상자 바로 아래에 입력되는 글자의 바이트 수를 '10/80 바이트' 와 같은 포맷으로 표시하되 우측 정렬합니다.
3. 텍스트 입력상자에 입력되는 글자의 크기와 줄 간격을 조정하여 한 줄에 한글 10글자가 들어가도록 만들어 봅니다.
4. [전송] 버튼을 누르면 입력된 글자를 화면에 토스트로 표시하여 내용을 확인할 수 있도록 합니다.
github.com/HanYeop/AndroidStudio-Practice
MainActivity 부분
package org.techtown.mission4;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.UnsupportedEncodingException;
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editTextTextPersonName2);
textView = findViewById(R.id.textView3);
Button sendButton = findViewById(R.id.button3);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String message = editText.getText().toString();
Toast.makeText(getApplicationContext(),"메세지\n\n"+message,Toast.LENGTH_LONG).show();
} // 메세지 전송
});
Button closeButton = findViewById(R.id.button4);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish(); // 종료
}
});
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
byte[] bytes = null;
try {
bytes = charSequence.toString().getBytes("KSC5601"); // 한글 완성형 표준
int strCount = bytes.length;
textView.setText(strCount + " / 80바이트");
} catch(UnsupportedEncodingException ex) {
ex.printStackTrace();
}
} // 텍스트박스의 내용이 바뀔때마다 글자수 출력
@Override
public void afterTextChanged(Editable editable) {
String str = editable.toString();
try {
byte[] strBytes = str.getBytes("KSC5601"); // 한글 완성형 표준
if(strBytes.length > 80) {
editable.delete(editable.length()-2, editable.length()-1);
}
} catch(Exception ex) {
ex.printStackTrace();
}
} // 글자수 제한하기
};
editText.addTextChangedListener(textWatcher);
}
}
바이트로 글자수를 세는것과 제한하는 것이 중요