728x90
- 앱의 기능 설명
- 1. 로그인 기능
- 2. 메모장
- 3. 달력
- 4. 연락처
- 5. 그림판
- 6. 미니게임
- 7. 계산기
- 8. 스톱워치
- 9. 가계부
- 달력(일정 메모)
- 달력 xml 코드
더보기
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#25E9FD35"
android:orientation="vertical">
<CalendarView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/calendarView"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
app:layout_constraintHorizontal_bias="0.488" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView3"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity= "center"
android:id="@+id/diaryTextView" android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/calendarView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
android:layout_marginStart="8dp" android:textAppearance="@style/TextAppearance.AppCompat.Large"/>
<EditText
android:layout_width="0dp"
android:layout_height="100dp"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/contextEditText"
app:layout_constraintTop_toBottomOf="@+id/diaryTextView" android:layout_marginTop="16dp"
android:hint="내용을 입력하세요." android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginRight="8dp" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
android:visibility="invisible"/>
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/contextEditText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/contextEditText"
app:layout_constraintTop_toTopOf="@+id/contextEditText" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:gravity="center"
android:text="달력일기장"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="#9E28B3"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:text="저장"
android:layout_width="0dp"
android:layout_marginBottom="20dp"
android:layout_height="wrap_content"
android:id="@+id/save_Btn" android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/contextEditText" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
android:layout_marginStart="8dp" android:visibility="invisible"/>
<Button
android:text="수정"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:id="@+id/cha_Btn"
app:layout_constraintBaseline_toBaselineOf="@+id/save_Btn" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp"
app:layout_constraintEnd_toStartOf="@+id/del_Btn" android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" android:visibility="invisible"/>
<Button
android:text="삭제"
android:layout_width="176dp"
android:layout_height="wrap_content"
android:id="@+id/del_Btn"
app:layout_constraintBaseline_toBaselineOf="@+id/cha_Btn" app:layout_constraintEnd_toEndOf="@+id/save_Btn"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:visibility="invisible"></Button>
</android.support.constraint.ConstraintLayout>
- 캘린더 뷰를 이용하여 달력을 사용하였다.
- 저장, 수정, 삭제 버튼을 이용하여 해당 날짜에 해당하는 메모를 기입하고 수정, 삭제 한다.
- 달력 java 코드
더보기
public class Activity2 extends AppCompatActivity {
public String fname=null;
public String str=null;
public CalendarView calendarView;
public Button cha_Btn,del_Btn,save_Btn;
public TextView diaryTextView,textView2,textView3;
public EditText contextEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);
calendarView=findViewById(R.id.calendarView);
diaryTextView=findViewById(R.id.diaryTextView);
save_Btn=findViewById(R.id.save_Btn);
del_Btn=findViewById(R.id.del_Btn);
cha_Btn=findViewById(R.id.cha_Btn);
textView2=findViewById(R.id.textView2);
textView3=findViewById(R.id.textView3);
contextEditText=findViewById(R.id.contextEditText);
String name=("Developer");
final String userID=("");
textView3.setText(name+"님의 달력 일기장");
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
diaryTextView.setVisibility(View.VISIBLE);
save_Btn.setVisibility(View.VISIBLE);
contextEditText.setVisibility(View.VISIBLE);
textView2.setVisibility(View.INVISIBLE);
cha_Btn.setVisibility(View.INVISIBLE);
del_Btn.setVisibility(View.INVISIBLE);
diaryTextView.setText(String.format("%d / %d / %d",year,month+1,dayOfMonth));
contextEditText.setText("");
checkDay(year,month,dayOfMonth,userID);
}
});
save_Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveDiary(fname);
str=contextEditText.getText().toString();
textView2.setText(str);
save_Btn.setVisibility(View.INVISIBLE);
cha_Btn.setVisibility(View.VISIBLE);
del_Btn.setVisibility(View.VISIBLE);
contextEditText.setVisibility(View.INVISIBLE);
textView2.setVisibility(View.VISIBLE);
}
});
}
public void checkDay(int cYear,int cMonth,int cDay,String userID){
fname=""+userID+cYear+"-"+(cMonth+1)+""+"-"+cDay+".txt";//저장할 파일 이름설정
FileInputStream fis=null;//FileStream fis 변수
try{
fis=openFileInput(fname);
byte[] fileData=new byte[fis.available()];
fis.read(fileData);
fis.close();
str=new String(fileData);
contextEditText.setVisibility(View.INVISIBLE);
textView2.setVisibility(View.VISIBLE);
textView2.setText(str);
save_Btn.setVisibility(View.INVISIBLE);
cha_Btn.setVisibility(View.VISIBLE);
del_Btn.setVisibility(View.VISIBLE);
cha_Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
contextEditText.setVisibility(View.VISIBLE);
textView2.setVisibility(View.INVISIBLE);
contextEditText.setText(str);
save_Btn.setVisibility(View.VISIBLE);
cha_Btn.setVisibility(View.INVISIBLE);
del_Btn.setVisibility(View.INVISIBLE);
textView2.setText(contextEditText.getText());
}
});
del_Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView2.setVisibility(View.INVISIBLE);
contextEditText.setText("");
contextEditText.setVisibility(View.VISIBLE);
save_Btn.setVisibility(View.VISIBLE);
cha_Btn.setVisibility(View.INVISIBLE);
del_Btn.setVisibility(View.INVISIBLE);
removeDiary(fname);
}
});
if(textView2.getText()==null){
textView2.setVisibility(View.INVISIBLE);
diaryTextView.setVisibility(View.VISIBLE);
save_Btn.setVisibility(View.VISIBLE);
cha_Btn.setVisibility(View.INVISIBLE);
del_Btn.setVisibility(View.INVISIBLE);
contextEditText.setVisibility(View.VISIBLE);
}
}catch (Exception e){
e.printStackTrace();
}
}
@SuppressLint("WrongConstant")
public void removeDiary(String readDay){
FileOutputStream fos=null;
try{
fos=openFileOutput(readDay,MODE_NO_LOCALIZED_COLLATORS);
String content="";
fos.write((content).getBytes());
fos.close();
}catch (Exception e){
e.printStackTrace();
}
}
@SuppressLint("WrongConstant")
public void saveDiary(String readDay){
FileOutputStream fos=null;
try{
fos=openFileOutput(readDay,MODE_NO_LOCALIZED_COLLATORS);
String content=contextEditText.getText().toString();
fos.write((content).getBytes());
fos.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
- 우선, 각각의 버튼과 뷰들을 해당 java로 선언 하였다.
- setVisibility를 이용하여 VISIBLE과 INVISIBLE을 통해 필요에 따라 해당 기능이 보이도록, 안보이도록 하였다.
- 각 버튼이 클릭 되었을 때 해당 기능들이 실행 되도록 하였다.
- 항목이 입력 받았을 때, 이 메모에 대한 항목들을 해당 년도, 날짜를 변수명으로 입력받아, 이 해당 날짜에 대한 파일을 생성하여 해당 파일에 저장되도록 하였다.
- try, catch 문을 이용하여, 해당 파일의 output, input이 용이 하도록 하였다.
728x90
'안드로이드' 카테고리의 다른 글
안드로이드 프로그래밍 - 다용도 앱 만들기 6 (0) | 2023.01.18 |
---|---|
안드로이드 프로그래밍 - 다용도 앱 만들기 5 (0) | 2023.01.18 |
안드로이드 프로그래밍 - 다용도 앱 만들기 3 (0) | 2023.01.18 |
안드로이드 프로그래밍 - 다용도 앱 만들기 2 (0) | 2023.01.18 |
안드로이드 프로그래밍 - 다용도 앱 만들기 1 (0) | 2023.01.18 |