导航:首页 > 操作系统 > android日历开发教程

android日历开发教程

发布时间:2023-03-11 06:07:39

A. 安卓手机日历的使用

为了方便大家更好的使用日历,我做一个简单的教程供参考。

1.点击右上角一个笔的符号

2.添加自己的事件(下面的时间和闹钟大家应该都会)

敲黑板:  有的事件是每周都要的,如果一周一周弄很麻烦。

    点击下面“有数字2的刷新符号”就可以设置重复了。

1.点击左上角三条线的符号

2.出来这样的画面,然后再点击右上角的齿轮符号。

3.找到管理日历这一项

4.点击solcalendar右边的加号,即可添加日历。

5.这样在设置日程的时候,就可以勾选决定保存在那个日历。

6.如何查看呢

同样和上面一样,先点击右上角的三条线符号出来这个页面。

点击最右边的日历,即可显示自己想要查看的日历。

(以下借鉴班级同学内容)

B. 安卓日历整体布局是怎么实现的

自定义日历控件,支持旧历、节气、日期标注、点击操作 (参考网络上的日历控件改写)
注:将下面的四张资源图片拷贝到所建包的下一个image目录中,如Calendar.java 所在包为
cc.util.android.view,则需要再创建一个包cc.util.android.view.image 然后将图片拷贝进去
/****************从此出开始将代码拷贝到一个文件中*******************/
package cc.util.android.view;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.ViewFlipper;
import android.widget.AbsListView.LayoutParams;

/**
* 日历控件,支持旧历、节气、日期标注、点击操作 (参考网络上的日历控件改写)
*
* @author wangcccong
* @version 1.406 create at: Mon, 03 Sep. 2014
* <br>update at: Mon, 23 Sep. 2014
* 新增日期标注和点击操作
*/
public class CalendarView extends LinearLayout implements OnTouchListener,
AnimationListener, OnGestureListener {

/**
* 点击日历
*/
public interface OnCalendarViewListener {
void onCalendarItemClick(CalendarView view, Date date);
}

/** 顶部控件所占高度 */
private final static int TOP_HEIGHT = 40;
/** 日历item中默认id从0xff0000开始 */
private final static int DEFAULT_ID = 0xff0000;

// 判断手势用
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;

// 屏幕宽度和高度
private int screenWidth;

// 动画
private Animation slideLeftIn;
private Animation slideLeftOut;
private Animation slideRightIn;
private Animation slideRightOut;
private ViewFlipper viewFlipper;
private GestureDetector mGesture = null;

/** 上一月 */
private GridView gView1;
/** 当月 */
private GridView gView2;
/** 下一月 */
private GridView gView3;

boolean bIsSelection = false;// 是否是选择事件发生
private Calendar calStartDate = Calendar.getInstance();// 当前显示的日历
private Calendar calSelected = Calendar.getInstance(); // 选择的日历
private CalendarGridViewAdapter gAdapter;
private CalendarGridViewAdapter gAdapter1;
private CalendarGridViewAdapter gAdapter3;

private LinearLayout mMainLayout;
private TextView mTitle; // 显示年月

private int iMonthViewCurrentMonth = 0; // 当前视图月
private int iMonthViewCurrentYear = 0; // 当前视图年

private static final int caltitleLayoutID = 66; // title布局ID
private static final int calLayoutID = 55; // 日历布局ID
private Context mContext;

/** 标注日期 */
private final List<Date> markDates;

private OnCalendarViewListener mListener;

public CalendarView(Context context) {
this(context, null);
}

public CalendarView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
mContext = context;
markDates = new ArrayList<Date>();
init();
}

// 初始化相关工作
protected void init() {
// 得到屏幕的宽度
screenWidth = mContext.getResources().getDisplayMetrics().widthPixels;

// 滑动的动画
slideLeftIn = new TranslateAnimation(screenWidth, 0, 0, 0);
slideLeftIn.setDuration(400);
slideLeftIn.setAnimationListener(this);
slideLeftOut = new TranslateAnimation(0, -screenWidth, 0, 0);
slideLeftOut.setDuration(400);
slideLeftOut.setAnimationListener(this);
slideRightIn = new TranslateAnimation

C. android日历控件

1.DatePicker

在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。

1.1常用xml属性

DatePicker的常用xml属性如图1所示:

图1 DatePicker常用xml属性

其中,android:calendarViewShown[boolean]用于设置是否显示calendar view;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。

1.2常用方法

DatePicker的常用方法有以下一些:

(1)public CalendarView getCalendarView(); //获取CalendarView

(2)public boolean getCalendarViewShown(); //获取CalendarView是否显示

(3)public int getDayOfMonth(); //获取当前日期的日

(4)public long getMaxDate(); //获取最大日期

(5)public long getMinDate(); //获取最小日期

(6)public int getMonth(); //获取当前日期的月

(7)public boolean getSpinnersShown(); //获取Spinners是否显示

(8)public int getYear(); //获取当前日期的年

(9)public void init(int year,int monthOfYear,int dayOfMonth,

DatePicker.OnDateChangedListener onDateChangedListener); //初始化日期

(10)public void setCalendarViewShown(boolean shown);//设置是否显示CalendarView

(11)public void setMaxDate(long maxDate); //设置最大日期

(12)public void setMinDate(long minDate); //设置最小日期

(13)public void setSpinnersShown(boolean shown); //设置是否显示Spinners

(14)public void updateDate(int year,int month,int dayOfMonth); //更新当前日期2.TimePicker

在Android中,TimePicker用来实现时间输入设置,可以选择12或24小时模式。TimePicker的常用方法有以下一些:

(1)public Integer getCurrentHour(); //获取当前时间的小时

(2)public Integer getCurrentMinute(); //获取当前时间的分钟

(3)public boolean is24HourView(); //获取是否为24小时模式

(4)public void setCurrentHour(Integer currentHour); //设置当前时间的小时

(5)public void setCurrentMinute(Integer currentMinute); //设置当前时间的分钟

(6)public void setIs24HourView(Boolean is24HourView); //设置24小时模式3.DatePickerDialog

在Android中,DatePickerDialog用来显示日期对话框。DatePickerDialog的常用方法有以下一些:

(1)public DatePicker getDatePicker(); //获取DatePicker中的日期值

(2)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件

(3)public void onDateChanged(DatePicker view,int year,int month,int day); //响应日期改变事件

(4)public void updateDate(int year,int monthOfYear,int dayOfMonth); //更新当前日期4.TimePickerDialog

在Android中,TimePickerDialog用来显示时间对话框。TimePickerDialog的常用方法有以下一些:

(1)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件

(2)public void onTimeChanged(TimePicker view,int hourOfDay,int minute); //响应时间改变事件

(3)public void updateTime(int hourOfDay,int minuteOfHour); //更新当前时间5.AnalogClock

在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。6.DigitalClock

在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SS AM/PM。

D. 如何用android设计一个日历

import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

E. Android向系统日历添加日程事件闹钟不提示解决方法

1.项目中需要向系统日历添加日程,怎么添加就不多说了,网络一大堆,这文章主要解决准时或者提前多久闹钟提醒(CalendarContract.Reminders.MINUTES不设置时间也表示准时提醒)

2.添加多个闹钟提醒
道理是一样的,创建多个ContentValues,也可以直接循环创建,并设置CalendarContract.Reminders.MINUTES,这里就演示准时和提前十分钟各提醒一次了,大家可以根据需求创建 。

3.根据自己定义的id删除日程
(1).添加日历事件时,put(“_id”,"自己定义的id")

(2)删除时通过之前设置的id找到并删除

提示:6.0之后要动态申请日历读写权限

F. Android日历——基于RecyclerView的日历

        最近项目紧,需求多,本着能GitHub的就不自己动手。然鹅,并没有找到合适的。还是自己动手撸吧,再不完成就要被领导撸了。

        1、部分功能需要日历可以单选;       

        2、入住日期需要范围选择;

        3、对应显示农历。

        对于需求1和2,其本质需求是一样的,有了一个日历基础上就是控制选择的逻辑问题。那么日历从哪儿来呢?

        答案显而易见,标题已经划重点了——RecyclerView。

        这种上下滚动的日历(或者说这种布局),我们已经到了见了就有条件反应的地步了。从一开始的ListView、GridView到现在的RecyclerView,基本每个app都会用到。

        那么这个日历就决定是它了,出来吧:RecyclerView嵌套RecyclerView。

        其中复杂的就是嵌套的RecyclerView,其中需要显示的不同状态的日期较多。如不可选择的1号之前的日期、今天的日期、周末的日期等。

       项目地址: GitHub - Mitaxing/RVCalendar: 基于RecyclerView自定义日历,可单选,可范围选

G. 做一个android日历,从哪儿入手

如果你搭建好环境的话建议你先学一下view布局
首先你要在第一个activity创建一个垂直布局的LinearLayout,
然后再新建个水平布局的LinearLayout用来承载上面按钮的年月日
另外再建个垂直的LinearLayout
在下面这个LinearLayout新建1个水平的LinearLayout来循环生成7个标头“星期一,星期二”这样的
然后在循环建4个LinearLayout循环生成日期实体框
标题框和日期框分别新建一个类,继承view函数,在循环里面生成,构造函数填入宽高
这两个类里面分别重构ondraw()函数。
这样就ok了

H. 简单实用的Android 自定义 日历 Calendar

==========================

Include MonthPager in your layout XML.

目前来看 相比于Dialog选择日历 我的控件更适合于Activity/Fragment在Activity的 onCreate 或者Fragment的 onCreateView 你需要实现这两个方法来启动日历并装填进数据

使用此方法回调日历点击事件

使用此方法初始化日历标记数据

使用此方法给MonthPager添加上相关监听

Gradle:
Step 1. Add it in your root build.gradle at the end of repositories:

Step 2. Add the dependency

I. Android Compose 简易日历

初学Compose肯定要做些东西来熟悉,接下来我来分享我做的一个简易日历。

首先推荐一个网站,Accompanist是一组库,旨在用开发人员通常需要但尚不可用的功能来补充[Jetpack Compose。]。 google.github.io/accompanist…

协奏曲pager implementation("com.google.accompanist:accompanist-pager:0.21.3-beta")

然后是一个库,帮助我们在compose里创建和管理viewmodel

implementation('androidx.lifecycle:lifecycle-viewmodel-compose:2.4.0')

首先日历有年月日,但是我做的这个日历没有年份,你当然也可以自己添加。

【Android开发】Android开发教程——jetpack Compose原理解析以及未来趋势_哔哩哔哩_bilibili

阅读全文

与android日历开发教程相关的资料

热点内容
加密狗插上去了怎么办 浏览:622
锤子m1怎么把文件夹重置 浏览:213
APP的数据会存在哪里 浏览:64
一支轻快又解压的舞 浏览:586
80x86编程手册 浏览:765
android机制使用 浏览:361
国外太空探索网站源码 浏览:643
dotaimba命令大全 浏览:13
手解剖pdf 浏览:733
单片机无法烧写程序 浏览:413
pline命令 浏览:111
760贴片机编程视频 浏览:333
欧姆龙plc编程第36讲 浏览:915
我的世界如何将一个服务器弄崩 浏览:8
php网站访问量代码 浏览:431
怠速压缩机咔咔响 浏览:176
怎么才能修改APP中的数据 浏览:688
哪里有抢单的app 浏览:462
算法概率题 浏览:465
长方形拉伸的命令 浏览:279