3 분 소요

이번 포스팅부터는 설계했던 앱 디자인의 내부 기능들을 실제로 구현할 것입니다.

만들어야 할 기능들이 많지만 하나하나 차근차근 만들어가보도록 하겠습니다.

메인화면

다시한번 돌이켜보면 메인화면에 필요한 것들은

  1. 달력
  2. 연락처 버튼
  3. 일정추가 버튼

3가지 입니다.

우선, 저번 디자인설계때 메인화면에 달력을 추가해놨을겁니다. 달력에서 날짜를 클릭했을 때 아래쪽에 날짜와 텍스트가 출력되도록 코드를 만들어보겠습니다.

MainActivity.java 코드

public class MainActivity extends AppCompatActivity {

    private CalendarView calendarView;
    private TextView diaryText, DateView;
    private ImageButton button_GotoPhoneBook,button_GotoDiary;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //앱 실행 시 최초 화면

        initViews();

        //달력에서 날짜 선택하면 활성화
        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener()
        {
            @Override
            public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth)
            {
                diaryText.setVisibility(View.VISIBLE);
                DateView.setVisibility(View.VISIBLE);
                DateView.setText(String.format("%d / %d / %d", year, month + 1, dayOfMonth));
                diaryText.setText("일정 표시");       //해당 날짜 일정을 보여줌(미구현)
            }
        });
    }

    //뷰 초기화
    public void initViews(){
        calendarView = findViewById(R.id.calendarView);
        diaryText = findViewById(R.id.diaryText);
        DateView = findViewById(R.id.DateView);
        button_GotoDiary = findViewById(R.id.button_GotoDiary);
        button_GotoPhoneBook = findViewById(R.id.button_GotoAddList);
    }
}

onCreate() 함수는 C에서의 main함수와 같습니다.

initViews 라는 함수를 정의해서 객체들을 연결시켜주는 부분을 따로 만들어주어 onCreate() 함수안의 내용이 더러워지지 않도록 했습니다.

달력을 클릭했을 때 이벤트가 발생하는 setOnDateChangeListener 안의 onSelectedDayChange 함수에

날짜, 텍스트를 표시해주는 뷰들을 setVisibility 메소드로 VISIBLE 하게 만들어주었습니다. (클릭시 보이게 됨)

   

다음으로 연락처, 일정화면으로 갈 수 있도록하는 버튼 기능을 만들어줍니다.

        //일정추가(+) 버튼클릭
        button_GotoDiary.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent DiaryIntent = new Intent(getApplicationContext(), DiaryActivity.class);
                startActivity(DiaryIntent);
                finish();
            }
        });

        //연락처 버튼클릭
        button_GotoPhoneBook.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent PhoneBookIntent = new Intent(getApplicationContext(), PhoneBookActivity.class);
                startActivity(PhoneBookIntent);
                finish();
            }
        });

버튼을 누르게되면 새로운 Intent 객체를 생성하여 지정해준 액티비티를 실행시킬 수 있습니다.

일정화면

일정화면의 기능은 4가지입니다.

  1. 홈버튼
  2. 검색기능
  3. 글쓰기 버튼
  4. 목록선택

우선, 홈버튼과 글쓰기 버튼을 만듭니다.

DiaryActivity.java 코드

public class DiaryActivity extends AppCompatActivity {

    private ImageButton button_home;
    private Button button_GotoAddList;
    private EditText searchTitle;

    public ListView lvList = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_diary_main);

        initView();

        //홈 버튼
        button_home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent goHome = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(goHome);
                finish();
            }
        });

        //글 쓰기 화면 이동
        button_GotoAddList.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent GotoAddList = new Intent(getApplicationContext(),DiaryAddActivity.class);
                startActivity(GotoAddList);
                finish();
            }
        });


    //뷰 초기화
    public void initView(){
        lvList = findViewById(R.id.lv_list);
        searchTitle = findViewById(R.id.searchTitle);
        button_home = findViewById(R.id.button_home);
        button_GotoAddList = findViewById(R.id.button_GotoAddList);
         }
    }
}

연락처화면

연락처 화면은 일정 화면과 비슷합니다.

  1. 홈버튼
  2. 검색 기능
  3. 연락처 추가버튼
  4. 목록 선택

마찬가지로 홈버튼과 연락처 추가 버튼 기능을 만들어 줍니다.

PhoneBookActivity.java 코드

public class PhoneBookActivity extends AppCompatActivity {
    private ImageButton button_home;
    private Button button_GotoAddPhone;
    private EditText searchName;


    public ListView lvList1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phonebook_main);

        initViews();

        //홈 버튼클릭
        button_home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent goBack = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(goBack);
                finish();
            }
        });

        //연락처추가 버튼클릭
        button_GotoAddPhone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent GotoAddPhone = new Intent(getApplicationContext(),PhoneBookAddActivity.class);
                startActivity(GotoAddPhone);
                finish();
            }
        });
    }

    //뷰 초기화
    public void initViews(){
        lvList1 = findViewById(R.id.lv_list1);
        searchName = findViewById(R.id.searchName);
        button_home = findViewById(R.id.button_home);
        button_GotoAddPhone = findViewById(R.id.button_GotoAddPhone);
    }
}

얼추 모양새는 갖췄습니다.

마지막으로 글 쓰기 화면과 연락처 추가 화면만 달아주면 될 것 같습니다.

글 쓰기 화면

글 쓰기 화면에서는 제목과 글 내용을 입력해서 저장할 수 있는 화면입니다.

아직 저장을 할 순 없으므로 버튼만 달아둡니다.

DiaryAddActivity.java 코드

public class DiaryAddActivity extends AppCompatActivity {
    private ImageButton button_back;
    private Button button_save;
    private EditText title, content;


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

        initView();

        //뒤로가기 버튼
        button_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent goBack = new Intent(getApplicationContext(),DiaryActivity.class);
                startActivity(goBack);
                finish();
            }
        });
    }
    //뷰 초기화
    public void initView(){
        title = findViewById(R.id.title);
        content = findViewById(R.id.content);
        button_back = findViewById(R.id.button_back);
        button_save = findViewById(R.id.button_save);
    }
}

연락처 추가 화면

연락처 추가 화면에서는 이름과 전화번호를 입력해서 연락처를 추가할 수 있는 화면입니다.

아직 저장을 할 순 없으므로 버튼만 달아둡니다.

PhoneBookAddActivity.java 코드


public class PhoneBookAddActivity extends AppCompatActivity {
    private ImageButton button_back;
    private EditText input_Name, input_Phone;
    private Button button_add;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phonebook_add);

        initViews();

        //뒤로가기 버튼
        button_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent goBack = new Intent(getApplicationContext(),PhoneBookActivity.class);
                startActivity(goBack);
                finish();
            }
        });
    }

    //뷰 초기화
    public void initViews(){
        input_Name = findViewById(R.id.input_Name);
        input_Phone = findViewById(R.id.input_Phone);
        button_back = findViewById(R.id.button_back);
        button_add = findViewById(R.id.button_add);
    }
}

다음 포스팅에서는 데이터베이스를 설계하고 실제로 구현해보도록 하겠습니다.

댓글남기기