경험의 기록

▶Do it! 안드로이드 앱 프로그래밍(정재곤 지음) 참조


 

 

1. MS로 문자를 전송하는 화면은 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치하도록 구성합니다.

2. 텍스트 입력상자 바로 아래에 입력되는 글자의 바이트 수를 '10/80 바이트' 와 같은 포맷으로 표시하되 우측 정렬합니다.

3. 텍스트 입력상자에 입력되는 글자의 크기와 줄 간격을 조정하여 한 줄에 한글 10글자가 들어가도록 만들어 봅니다.

4. [전송] 버튼을 누르면 입력된 글자를 화면에 토스트로 표시하여 내용을 확인할 수 있도록 합니다.

 

github.com/HanYeop/AndroidStudio-Practice

 

HanYeop/AndroidStudio-Practice

AndroidStudio Practice. Contribute to HanYeop/AndroidStudio-Practice development by creating an account on GitHub.

github.com

 

 

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);
    }
}

바이트로 글자수를 세는것과 제한하는 것이 중요

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading