당신은 주제를 찾고 있습니까 “안드로이드 스튜디오 캘린더 – 안드로이드 초간단 CalendarView 사용법“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 아사안개 이(가) 작성한 기사에는 조회수 561회 및 좋아요 8개 개의 좋아요가 있습니다.
안드로이드 스튜디오 캘린더 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 안드로이드 초간단 CalendarView 사용법 – 안드로이드 스튜디오 캘린더 주제에 대한 세부정보를 참조하세요
응애👶🏻 신입 안드로이드 개발자가 본인 스스로 까먹는거 방지하기 위해 만든 채널
안드로이드 초간단 달력 사용법!
전체 코드는 하단 블로그에 있어요 🥰
블로그📒 : https://devziner.tistory.com/17
안드로이드 스튜디오 캘린더 주제에 대한 자세한 내용은 여기를 참조하세요.
[JAVA][Android] 달력 빠르게 만들기
[JAVA][Andro] 달력 빠르게 만들기. teamnova 2021. 6. 18. 12:00. 이번 포스팅에선 자바를 사용해 달력을 띄우고, 일별로 일정을 저장할 수 있는 방법에 대해 …Source: stickode.tistory.com
Date Published: 10/16/2021
View: 2511
안드로이드 스튜디오-calendarview를 사용하고 일정을 저장 …
calendarview를 사용하여 달력을 만들고 특정 날짜에 일정을 openFileInput, openFileOutput으로 저장하는 기능을 사용하도록 하겠습니다.
Source: cpcp127.tistory.com
Date Published: 6/20/2022
View: 188
[안드로이드]달력 만들기(calendar) – 코딩벌레
안녕하세요!! 오늘은 안드로이드에서 달력을 만들어 보겠습니다!! 안드로이드 달력은 수많은 예제가 있는데요 이번 포스트에서는 Material Calendar 를 사용하여 달력 …
Source: dpdpwl.tistory.com
Date Published: 5/9/2022
View: 3507
[안드로이드]달력(CalendarView) 만들어보기
2020/12/10 – [안드로이드] – [안드로이드]별점(RatingBar) 만들어보기 이번시간에는 캘린더를 만들어보겠습니다. 스마트폰 기본앱으로 들어가 …
Source: aries574.tistory.com
Date Published: 5/19/2021
View: 1790
[안드로이드 스튜디오 독학#39] WGout_캘린더(Custom …
[안드로이드 스튜디오 독학#39] WGout_캘린더(Custom Calendar) … 일정을 저장하기 위한 스케줄러 느낌의 캘린더 만들기 위해 캘린더에 대해 찾아 …Source: seminzzang.tistory.com
Date Published: 6/17/2021
View: 1002
[공부] 달력 다루기 CalendarView
일단 캘린더 날짜를 클릭했을 때 어떻게 반응하는 지 알아야한다. … Calendar”>
Source: gyulogs.tistory.com
Date Published: 2/3/2021
View: 4405
주제와 관련된 이미지 안드로이드 스튜디오 캘린더
주제와 관련된 더 많은 사진을 참조하십시오 안드로이드 초간단 CalendarView 사용법. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 안드로이드 스튜디오 캘린더
- Author: 아사안개
- Views: 조회수 561회
- Likes: 좋아요 8개
- Date Published: 2022. 1. 10.
- Video Url link: https://www.youtube.com/watch?v=2hXkoUeHuvE
[JAVA][Android] 달력 빠르게 만들기
이번 포스팅에선 자바를 사용해 달력을 띄우고, 일별로 일정을 저장할 수 있는 방법에 대해 포스팅하겠습니다.
코틀린으로 만드는 방법에 대해선 아래 포스팅을 참고해 주세요.
stickode.tistory.com/139
먼저 메인 화면을 만들어줍니다. 달력이 있고 일자를 클릭하면 밑에 내가 어떤 날짜를 선택했는지 텍스트뷰로 보여주며, 일정을 추가할 editText와 저장할 버튼을 만들겠습니다.
다음으로 메인 액티비티의 자바 파일을 작성하겠습니다.
import android.os.Bundle; import android.widget.Button; import android.widget.CalendarView; import android.widget.EditText; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { public String readDay = 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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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); } }
화면의 기본 틀은 만들었으니 이제 하나씩 기능을 추가해 보겠습니다.
일자를 클릭하면 달력 밑에 editText가 나오게 한 다음, 그곳에 일정을 입력할 수 있고 저장 버튼을 누르면 해당 일자에 내가 입력한 일정이 저장되도록 하겠습니다.
일자를 클릭하는 것은 캘린더뷰를 클릭하는 것이기 때문에, 캘린더뷰에 아래 처리를 해주면 됩니다.
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); } });
그리고 저장 버튼의 클릭 리스너를 아래와 같이 정의해줍니다.
save_Btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { saveDiary(readDay); 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); } });
다음으로 삭제 버튼의 리스너도 만들어줍니다.
@SuppressLint(“WrongConstant”) public void removeDiary(String readDay) { FileOutputStream fos; try { fos = openFileOutput(readDay, MODE_NO_LOCALIZED_COLLATORS); String content = “”; fos.write((content).getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } }
최종 코드는 아래와 같습니다.
import android.annotation.SuppressLint; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CalendarView; import android.widget.EditText; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity { public String readDay = 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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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); 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); } }); save_Btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { saveDiary(readDay); 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) { readDay = “” + cYear + “-” + (cMonth + 1) + “” + “-” + cDay + “.txt”; FileInputStream fis; try { fis = openFileInput(readDay); 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(readDay); } }); 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; 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; try { fos = openFileOutput(readDay, MODE_NO_LOCALIZED_COLLATORS); String content = contextEditText.getText().toString(); fos.write((content).getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } }
앱을 빌드해서 확인하면 아래와 같이 작동하는 걸 볼 수 있습니다.
이 포스팅에 사용된 코드는 아래 링크에서 확인하실 수 있습니다.
stickode.com/detail.html?no=2169
안드로이드 스튜디오-calendarview를 사용하고 일정을 저장하는 기능
728×90
calendarview를 사용하여 달력을 만들고 특정 날짜에 일정을 openFileInput, openFileOutput으로 저장하는 기능을 사용하도록 하겠습니다
먼저 저는 로그인을 하여 그 아이디에 따라 일정을 저장하도록 하여서 로그인 및 회원가입 화면도 알고 싶으시면 아래 글을 보고 만들어 주시면 됩니다.
https://cpcp127.tistory.com/9
https://cpcp127.tistory.com/10
화면은 이런 식으로 구성되고 현재 보이진 않지만 날짜를 누르면 선택한 날짜, 일정을 쓰거나 보일 text, 수정, 저장, 삭제 기능 버튼 및 textView를 보이도록 하였습니다.
xml
이제 메인 문으로 가기 전에 openFileInput, openFileOutput에 대해 간단히 설명하겠습니다.
안드로이드 기기에서 자료를 저장하는 방법은 크게 4가지가 있습니다.
내부 저장장치, 외부 저장장치, db에 저장, sharedpreferences가 있는데 openFileInput, openFileOutput은 내부 저장장치를 사용하여 저장합니다.
자바의 파일 입출력 스트림을 사용하며, openFileInput, openFileOutput을 사용하여 안드로이드 내부 저장장치에 파일을 생성하여 쓰고 읽기를 하는 방식입니다.
openFileInput : 하위 디렉터리에 있는 응용프로그램 파일을 읽기 모드로 오픈
openFileOutput : 하위 디렉터리에 있는 응용프로그램 파일을 쓰기 모드로 열거나 생성
MainActivity. java
package com.example.project5; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CalendarView; import android.widget.EditText; import android.widget.TextView; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity 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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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); //로그인 및 회원가입 엑티비티에서 이름을 받아옴 Intent intent=getIntent(); String name=intent.getStringExtra(“userName”); final String userID=intent.getStringExtra(“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(); } } }
editText에 자바라 쓰고 저장을 누르면
사진처럼 2020/4/29.txt 파일에 자바. 가 저장되어 29일을 클릭하면 저장된 txt 파일이 출력됩니다.
*참고(코틀린을 자바로 변환하여 사용하였습니다)
https://blog.naver.com/PostView.nhn?blogId=oper4062&logNo=221446757338&parentCategoryNo=&categoryNo=6&viewDate=&isShowPopularPosts=true&from=search
728×90
코딩벌레 :: [안드로이드]달력 만들기(calendar)
추가해줍니다.
// showOtherDates 에는 여러 옵션이 있습니다
// 기본적으로 defaults 값은 현재 달(month)만 보여줍니다.
// 이전달의 날자와 다음달 날자의일부를 보여주는 옵션도 가능합니다.
java코드로 넘어와서
MaterialCalendarView 를 바인드 해줍니다. (findViewById 로 얻어와도 됩니다)
MaterialCalendarView에는
달력의 시작과 끝을 지정해줄수 있습니다.
addDecorators 로 달력에 효과를 줄수있습니다.
처럼 SundayDecorator()와 SaturdayDecorator()로 토요일,일요일에 색을 줄수 있고 onDayDecorator()로 오늘 날자에 지정색을 줄 수 있습니다.
SundayDecorator(),SaturdayDecorator(),onDayDecorator() 의 예시는 포스트 아래에 올려두겠습니다!
[안드로이드]달력(CalendarView) 만들어보기
반응형
2020/12/10 – [안드로이드] – [안드로이드]별점(RatingBar) 만들어보기
이번시간에는 캘린더를 만들어보겠습니다. 스마트폰 기본앱으로 들어가 있습니다.
간단하게 달력에서 날짜를 선택하면 해당 날짜를 텍스트뷰에 보이도록 하겠습니다.
1. 화면구현(activity_main.xml)
xml version ="1.0" encoding ="utf-8" ?>
2. 기능구현(MainActivity.java)
import androidx.annotation. NonNull ;
import androidx.appcompat.app.AppCompatActivity ;
import android.os.Bundle ;
import android.widget.CalendarView ;
import android.widget.TextView ;
import java.text.DateFormat ;
import java.text.SimpleDateFormat ;
import java.util.Date ;
public class MainActivity extends AppCompatActivity {
CalendarView calendarView ;
TextView today ;
@Override
protected void onCreate (Bundle savedInstanceState) {
super .onCreate(savedInstanceState) ;
setContentView(R.layout. activity_main ) ;
today = findViewById(R.id. today ) ;
calendarView = findViewById(R.id. calendarView ) ;
// 날짜변환
DateFormat formatter = new SimpleDateFormat( “yyyy 년 MM 월 dd 일 ” ) ;
Date date = new Date( calendarView .getDate()) ;
today .setText(formatter.format(date)) ;
calendarView .setOnDateChangeListener( new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange ( @NonNull CalendarView view , int year , int month , int dayOfMonth) {
String day ;
day = year + ” 년 ” + (month+ 1 ) + ” 월 ” + dayOfMonth + ” 일 ” ;
today .setText(day) ;
}
}) ;
}
}
3. 실행화면
반응형
[안드로이드 스튜디오 독학#39] WGout_캘린더(Custom Calendar)
반응형
일정을 저장하기 위한 스케줄러 느낌의 캘린더 만들기 위해 캘린더에 대해 찾아봤었다.
안드로이드에서 CalendarView라는 캘린더를 제공하긴 하지만 내가 생각하는 기능들을 넣기에는 한계가 있다고 느꼈다.
나중에라도 다른 기능을 더 추가하기 위해서는 캘린더를 커스텀해서 만들어야겠다는 생각을 하게 되었고, 커스텀 캘린더를 만들기로 했다.
1. Calendar
Home화면에서 Drawer를 통해 달력을 들어가면 아래와 같은 화면이 나온다.
캡쳐를 한 시점인 7월 1일을 기준으로 현재 일은 초록색, 평일은 검은색, 토요일은 파란색, 일요일은 빨간색으로 표기했다.
WGout_Calendar
캘린더는 리사이클러뷰로 만들었다.
캘린더를 구성하는 코드는 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 private void setCalender( int year, int month){ adapter_calendar = new CalendarRecyclerAdapter(year, month); rv_calendar.setLayoutManager( new StaggeredGridLayoutManager( 7 ,StaggeredGridLayoutManager.VERTICAL)); rv_calendar.setAdapter(adapter_calendar); GregorianCalendar calendar = new GregorianCalendar(year, month, 1 ); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) – 1 ; int max = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); String str = “” ; tv_calendar_date.setText(Integer. toString (calendar.get(Calendar.YEAR)) + “/” + Integer. toString (calendar.get(Calendar.MONTH) + 1 )); for ( int i = 0 ; i < dayOfWeek; i + + ){ adapter_calendar.addItem(CALENDAR_EMPTY, 0 , false , 0 ); } for ( int i = 1 ; i < = max; i + + ){ mdate = Integer. toString ((year * 10000 ) + ((month + 1 ) * 100 ) + i); Cursor cursor_calendar_schedule = null ; cursor_calendar_schedule = sqliteDB.rawQuery( "SELECT * FROM SCHEDULE WHERE DATE = '" + mdate + "'" , null ); str + = Integer. toString (cursor_calendar_schedule.getCount()) + " " ; if (cursor_calendar_schedule.getCount() ! = 0 ) { adapter_calendar.addItem(CALENDAR_DAY, i, true , cursor_calendar_schedule.getCount()); } else { adapter_calendar.addItem(CALENDAR_DAY, i, false , 0 ); } //날짜에 따른 일정 표시 } } Colored by Color Scripter cs 먼저 리사이클러뷰를 StaggredGridLayoutManager를 이용해서 한 행을 7칸으로 나눈다.( -> 일 월 화 수 목 금 토 )
그다음 현재 날짜를 받아와서 날짜를 표시하는 day.xml 공백을 표시하는 empty.xml을 이용해서 달력을 구성한다.
달력의 이전 버튼을 누르면 아래 화면처럼 이전 달의 정보를 얻을 수 있고,
WGout_Calendar_previous
다음 버튼을 누르면 다음 달의 정보를 알 수 있다.
WGout_Calendar_next
달력에서 임의의 날짜 하나를 선택하여 클릭하면 아래와 같은 화면이 나온다.
WGout_Calendar_select
현재는 일정을 추가하지 않아서 “일정이 없습니다.”가 적힌 TextView가 표시된다.
오른쪽 상단에 표시된 추가 버튼을 누르면 일정을 추가할 수 있다.
버튼을 누르면 아래와 같은 화면이 나온다.
WGout_Calendar_add
지도는 Naver에서 제공하는 API를 사용했는데 API에 대해 정리한 게시글은 아래 링크에 있다.
초기화면은 GpsGetter를 이용해 현재의 위경도를 받아와 지도에 표시한다.
아래 사진처럼 맵에서 원하는 위치를 클릭하고 일정을 등록한 다음에 저장버튼을 누르면,
WGout_Calendar_add2
아래처럼 일정이 추가되고,
WGout_Calendar_schedule
일정을 다시 클릭하면 일정에 대한 정보가 나오고 삭제를 할 수 있다.
WGout_Calendar_show
그리고 달력에서도 일정을 확인할 수 있다.
WGout_Calendar_added
반응형
[공부] 달력 다루기 CalendarView
캘린더를 이용한 기능을 만들어야 한다.
날짜를 선택하고, 그 날짜에 따른 액티비티를 만들어서 거기서 todo를 처리하도록 해야한다.
일단 캘린더 날짜를 클릭했을 때 어떻게 반응하는 지 알아야한다.
void setOnDateChangeListener(CalendarView,OnDateChangeListener listener)
void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth)
이거 두 개 메소드로 날짜를 클릭했을 때 동작을 설정할 수 있다.
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { Toast.makeText(getApplicationContext(), dayOfMonth, Toast.LENGTH_LONG).show(); } });
이렇게 했는데 계속 액티비티가 죽었다.
여기서는 아직 모르겠어서 다른 내용을 찾아보니 context에 문제가 있었다.
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { Toast.makeText(Calendar.this, dayOfMonth, Toast.LENGTH_LONG).show(); } });
getApplicationContext 대신에 현재 java파일을 연결해봤다. 안됐다.
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { // Toast.makeText(Calendar.this, dayOfMonth, Toast.LENGTH_LONG).show(); String date = year + “/” + (month + 1) + “/” + dayOfMonth; dateRecord.setText(date); } });
문자열을 생성해서 만들어놓은 MultilineTextView에 전달해줬다.
잘 작동한다.
이제 날짜를 누르면 해당 날짜를 출력하면서 todo화면을 꺼내는 기능을 만들어 볼거다. manifest에서 메인 액티비티를 calendar로 바꾸자.
전환이 용이하게 주석처리해줬다.
이제 액티비티가 전환 될 때 값을 넘겨줘야한다.
Intent를 사용하고, 넘겨줄 때는 putExtra, 받을 때는 getExtra를 사용해 액티비티간 전환 시 데이터를 주고 받을 수 있다.
final CharSequence[] date = {null}; goToMain.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // finish(); Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.putExtra(“selectedDate”, date[0]); startActivity(intent); } }); calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { // Toast.makeText(Calendar.this, dayOfMonth, Toast.LENGTH_LONG).show(); date[0] = year + “/” + (month + 1) + “/” + dayOfMonth; dateRecord.setText(date[0]); } });
일단 아직도 final 배열을 사용해야하는 지는 공부하지 않았다. putExtra(“key”, “value”)로 값을 넘겨주고
Intent intent = getIntent(); final String date = intent.getExtras().getString(“selectedDate”); day.setText(date);
getIntent 인스턴스를 만들어 key값으로 값을 받아오면 된다.
잘 값이 넘어가는 것을 볼 수 있다.
“댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다”
키워드에 대한 정보 안드로이드 스튜디오 캘린더
다음은 Bing에서 안드로이드 스튜디오 캘린더 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 안드로이드 초간단 CalendarView 사용법
- 안드로이드
- 안드로이드 앱개발
- 안드로이드 기초
- android
- java
- 안드로이드 java
- calendar
- 안드로이드 달력
- 안드로이드 calendarview
- 안드로이드 날짜
- 안드로이드 날짜설정
- 안드로이드 달력설정
- 안드로이드 달력만들기
안드로이드 #초간단 #CalendarView #사용법
YouTube에서 안드로이드 스튜디오 캘린더 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 안드로이드 초간단 CalendarView 사용법 | 안드로이드 스튜디오 캘린더, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.