android中的自定义日历日视图

jtjikinw  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(522)

我想为androidos1.5及更高版本开发一个定制的日历日视图。
类似于android日日历,在日视图中添加和显示事件。
如果你有它的例子或来源,那么请给我。
我不知道怎么开始。请引导我。
我已经按照下面的链接完成了月视图:
http://w2davids.wordpress.com/android-simple-calendar/
但我也要创建日视图,所以请帮助我。
我要显示以下内容:

lrl1mhuk

lrl1mhuk1#

我刚刚研究过这个:

你可以把它看作一个蓝图。

  1. /**
  2. * @author Sherif
  3. *
  4. * Copyright 2011
  5. *
  6. * Sample Day Viewer that will show entries of each hour with ability to
  7. * add events and stuff
  8. * You should find a way to keep a container that will keep track of added events
  9. *
  10. */
  11. public class DayViewActivity extends ListActivity {
  12. /**Called when the activity is first created. */
  13. private static int HOURS_PER_DAY = 24;
  14. Context mContext = this;
  15. @Override
  16. public void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. //getListView().setBackgroundColor(Color.rgb(12, 12, 12));
  19. getListView().setDividerHeight(0);
  20. setListAdapter(new ListAdapter(){
  21. @Override
  22. public boolean areAllItemsEnabled() {
  23. // TODO Auto-generated method stub
  24. return false;
  25. }
  26. @Override
  27. public boolean isEnabled(int arg0) {
  28. // TODO Auto-generated method stub
  29. return false;
  30. }
  31. @Override
  32. public int getCount() {
  33. // TODO Auto-generated method stub
  34. return HOURS_PER_DAY;
  35. }
  36. @Override
  37. public Object getItem(int arg0) {
  38. // TODO Auto-generated method stub
  39. return null;
  40. }
  41. @Override
  42. public long getItemId(int arg0) {
  43. // TODO Auto-generated method stub
  44. return 0;
  45. }
  46. @Override
  47. public int getItemViewType(int arg0) {
  48. // TODO Auto-generated method stub
  49. return 0;
  50. }
  51. @Override
  52. public View getView(int position, View arg1, ViewGroup arg2) {
  53. // TODO Auto-generated method stub
  54. LayoutInflater inflater = getLayoutInflater();
  55. View listItem = (View) inflater.inflate(R.layout.list_item, getListView(),false);
  56. TextView hourTV = (TextView) listItem.findViewById(R.id.hourTV);
  57. TextView amTV = (TextView) listItem.findViewById(R.id.amTV);
  58. hourTV.setTextColor(Color.BLUE);
  59. amTV.setTextColor(Color.BLUE);
  60. final LinearLayout eventsLL = (LinearLayout) listItem.findViewById(R.id.eventsLL);
  61. hourTV.setText(String.valueOf((position+9)%24));
  62. //I set am/pm for each entry ... you could specify which entries
  63. if(((position>=0)&&(position<=2))||((position>=15)&&(position<=23)))
  64. amTV.setText("am");
  65. else
  66. amTV.setText("pm");
  67. eventsLL.setOnClickListener(new OnClickListener(){
  68. @Override
  69. public void onClick(View arg0) {
  70. // TODO Auto-generated method stub
  71. AlertDialog.Builder alert = new AlertDialog.Builder(mContext);
  72. alert.setTitle("New Event");
  73. alert.setMessage("Event:");
  74. // Set an EditText view to get user input
  75. final EditText input = new EditText(mContext);
  76. alert.setView(input);
  77. alert.setPositiveButton("Add", new DialogInterface.OnClickListener() {
  78. public void onClick(DialogInterface dialog, int whichButton) {
  79. TextView A = new TextView(mContext);
  80. A.setText(input.getText());
  81. A.setTextColor(Color.BLACK);
  82. eventsLL.addView(A);
  83. }
  84. });
  85. alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  86. public void onClick(DialogInterface dialog, int whichButton) {
  87. }
  88. });
  89. alert.show();
  90. }
  91. });
  92. return listItem;
  93. }
  94. @Override
  95. public int getViewTypeCount() {
  96. // TODO Auto-generated method stub
  97. return 1;
  98. }
  99. @Override
  100. public boolean hasStableIds() {
  101. // TODO Auto-generated method stub
  102. return false;
  103. }
  104. @Override
  105. public boolean isEmpty() {
  106. // TODO Auto-generated method stub
  107. return false;
  108. }
  109. @Override
  110. public void registerDataSetObserver(DataSetObserver arg0) {
  111. // TODO Auto-generated method stub
  112. }
  113. @Override
  114. public void unregisterDataSetObserver(DataSetObserver arg0) {
  115. // TODO Auto-generated method stub
  116. }
  117. });
  118. }

/可拉伸的/ eventbg.xml ```

展开查看全部
9rygscc1

9rygscc12#

帮助有相同问题的用户的最新答案:您可以为实现日历日视图使用或自定义此源https://github.com/r3za13/android-timeline-schedule-view

7kjnsjlb

7kjnsjlb3#

你可以使用谷歌日历来显示你的新日历,在这里你可以创建自己的活动。下面是创建新日历的类。

  1. public class CalendarMapper {
  2. private static final String ACCOUNT_NAME = "private";
  3. private static final String INT_NAME_PREFIX = "priv";
  4. @SuppressLint("NewApi")
  5. private static Uri buildCalUri() {
  6. return CalendarContract.Calendars.CONTENT_URI
  7. .buildUpon()
  8. .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
  9. .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
  10. .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
  11. .build();
  12. }
  13. private static ContentValues buildContentValues(Calendar calendar) {
  14. String dispName = "TUM3"; //Calendar.getName() returns a String
  15. String intName = INT_NAME_PREFIX + dispName;
  16. final ContentValues cv = new ContentValues();
  17. cv.put(Calendars.ACCOUNT_NAME, ACCOUNT_NAME);
  18. cv.put(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
  19. cv.put(Calendars.NAME, intName);
  20. cv.put(Calendars.CALENDAR_DISPLAY_NAME, dispName);
  21. //cv.put(Calendars.CALENDAR_COLOR, calendar.getColor()); //Calendar.getColor() returns int
  22. cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
  23. cv.put(Calendars.OWNER_ACCOUNT, ACCOUNT_NAME);
  24. cv.put(Calendars.VISIBLE, 1);
  25. cv.put(Calendars.SYNC_EVENTS, 1);
  26. return cv;
  27. }
  28. @SuppressWarnings("deprecation")
  29. public static Uri addCalendar(Calendar calendar, ContentResolver cr) {
  30. if (calendar == null)
  31. throw new IllegalArgumentException();
  32. final ContentValues cv = buildContentValues(calendar);
  33. Uri calUri = buildCalUri();
  34. Uri cancelUri=cr.insert(calUri, cv);
  35. return cancelUri;
  36. }
  37. }

在主活动中,您可以调用add calendar来创建日历并将事件添加到此日历中。

  1. Uri cancelUri;
  2. @SuppressLint("NewApi")
  3. public void displayCal(View view){
  4. ContentResolver crv = getContentResolver();
  5. Calendar calendar = Calendar.getInstance();
  6. cancelUri= CalendarMapper.addCalendar(calendar, crv);
  7. long calID=2; //ID of the newly created calendar. You can query the calendars table to get the ID of your calendar
  8. long endMillis = 10100;
  9. Calendar beginTime = Calendar.getInstance();
  10. beginTime.set(2012, 9, 14, 7, 30);
  11. long startMillis = beginTime.getTimeInMillis();
  12. Calendar endTime = Calendar.getInstance();
  13. endTime.set(2012, 9, 14, 8, 45);
  14. endMillis = endTime.getTimeInMillis();
  15. ContentResolver cr = getContentResolver();
  16. ContentValues values2 = new ContentValues();
  17. values2.put(Events.DTSTART, startMillis);
  18. values2.put(Events.DTEND, endMillis);
  19. values2.put(Events.TITLE, "Jazzercise");
  20. values2.put(Events.DESCRIPTION, "Group workout");
  21. values2.put(Events.CALENDAR_ID, calID);
  22. values2.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
  23. Uri uri = cr.insert(Events.CONTENT_URI, values2);
  24. Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
  25. builder.appendPath("time");
  26. ContentUris.appendId(builder, startMillis);
  27. Intent intent = new Intent(Intent.ACTION_VIEW)
  28. .setData(builder.build());
  29. startActivity(intent);
  30. }

要删除此日历,您可以按以下操作

  1. public void delCal(View view){
  2. ContentResolver crv = getContentResolver();
  3. crv.delete(cancelUri, null, null);
  4. }
展开查看全部

相关问题