當前位置:首頁 » 安卓系統 » android日歷實現

android日歷實現

發布時間: 2022-05-05 04:35:52

1. 做一個android日歷,從哪兒入手

如果你搭建好環境的話建議你先學一下view布局
首先你要在第一個activity創建一個垂直布局的LinearLayout,
然後再新建個水平布局的LinearLayout用來承載上面按鈕的年月日
另外再建個垂直的LinearLayout
在下面這個LinearLayout新建1個水平的LinearLayout來循環生成7個標頭「星期一,星期二」這樣的
然後在循環建4個LinearLayout循環生成日期實體框
標題框和日期框分別新建一個類,繼承view函數,在循環裡面生成,構造函數填入寬高
這兩個類裡面分別重構ondraw()函數。
這樣就ok了

2. 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。

3. Android 日歷提醒軟體是如何開發的

這種應用一般都是要系統許可權的,一般的日歷軟體使用定時器alarmmanager設置定時任務後,如果應用被殺死,那是不會有提醒的。所以這種應用要保證不被殺死。

4. 開發Android 日歷教程

一、創建
Android
Project
在新建對話框中輸入
App
屬性,SDK版本全部選最新的,不作版本兼容。主題選擇
Holo
Dark。
下一步,使用默認設置
下一步,使用默認設置
下一步,使用默認配置
下一步,使用默認設置
創建完成後的初始畫面
在上面的步驟中,我們選擇了創建
MainActivity,ADT
幫我們在
src
目錄下生成了
MainActivity.java
文件,在
res/layout/
目錄下生成了
activity_main.xml
文件,並在編輯窗口打開,如上圖,是
UI
界面定義文件,這是一個標準的
xml
文件,顯示的圖像就是由編輯器解析
xml
文件描繪出來的。點擊下方的
"Graphical
Layout"

“activity_main.xml"
可以在圖形編輯

xml
文本編輯器之間切換。
為了項目結構清晰,我們新建一個包,專門用來放
activity:
包名定為
ui.activity
這里,將
Package
Explorer
的顯示方式改為
Hierarchical
拖動
MainActivity.java

ui.activity
包下,彈出更新對話框,選擇OK。
由於改變了
activity
的位置,我們需要更新
AndroidManifest.xml,更正
Application
的配置。
如下圖,雙擊打開
AndroidManifest.xml,選擇
Application
標簽頁,選中
Application
Nodes
中的
MainActivity,右邊的
Name
屬性是錯誤的,點擊
Browse
重新選擇,設為:com.lingsmm.purelunarcalendar.ui.acivity
繼續向下拉,將
Screen
orientation
設置為
”sensorLandscape“,表示屏幕方向是橫屏,並感應重力方向作調整。
界面編輯窗口上方是工具欄:
1:多屏預覽,如果你的程序要兼容多種尺寸的設備,可以選擇此項。
2:主屏尺寸設定(我們的應用,不作兼容,只針對
google
Nexus
7,將此選擇為
Nexus
7,以10”畫面進行編輯布局)
3:屏幕方向,我們選擇橫屏
4:主題
5:關聯的
Java
類,Context
實例由它創建。
6:多語言支持。
7:系統版本選擇,如果兼容多版本,可以選擇不同版本進行預覽。

5. 如何用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;

6. android怎麼實現listview頭部帶有日歷

自定義一個背景圖,然後在上面加上一個TextView,根據當前時間設置對應的格式,設置TextView的內容,要用到自定義控制項。

7. android怎麼實現把一個.ics格式的日歷文件導入到系統日歷中

需要實現功能:將日程安排生成ics文件添加入郵件附件,通過手機接受郵件,將附件導入系統日歷。

8. android怎樣實現日歷年視圖

因為日歷是系統自帶的,所以讀寫它一定要申請許可權,也就是在AndroidManifest.xml加如下兩行代碼(一個讀一個寫):

<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>

Android中日歷用了三個URL,分別是日歷用戶的URL,事件的URL,事件提醒URL,三個URL在Android2.1之前是如下的樣子:

calanderURL = "content://calendar/calendars";
calanderEventURL = "content://calendar/events";
calanderRemiderURL= "content://calendar/reminders";

但是在Android2.2版本以後,三個URL有了改變,變成如下的樣子:

calanderURL = "content://com.android.calendar/calendars";
calanderEventURL = "content://com.android.calendar/events";
calanderRemiderURL = "content://com.android.calendar/reminders";

簡單的Demo,按照我的步驟一步一步的來:
第一步:新建一個Android工程命名為CalendarDemo.
第二步:修改main.xml布局文件,增加了三個按鈕,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/readUserButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Get a User"
/>
<Button
android:id="@+id/readEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Get a Event"
/>
<Button
android:id="@+id/writeEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Input a Event"
/>
</LinearLayout>

第三步:修改主核心程序CalendarDemo.java,代碼如下:
package com.tutor.calendardemo;

import java.util.Calendar;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class CalendarDemo extends Activity implements OnClickListener {
private Button mReadUserButton;
private Button mReadEventButton;
private Button mWriteEventButton;

private static String calanderURL = "";
private static String calanderEventURL = "";
private static String calanderRemiderURL = "";
//為了兼容不同版本的日歷,2.2以後url發生改變
static{
if(Integer.parseInt(Build.VERSION.SDK) >= 8){
calanderURL = "content://com.android.calendar/calendars";
calanderEventURL = "content://com.android.calendar/events";
calanderRemiderURL = "content://com.android.calendar/reminders";

}else{
calanderURL = "content://calendar/calendars";
calanderEventURL = "content://calendar/events";
calanderRemiderURL = "content://calendar/reminders";
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

setupViews();
}

private void setupViews(){
mReadUserButton = (Button)findViewById(R.id.readUserButton);
mReadEventButton = (Button)findViewById(R.id.readEventButton);
mWriteEventButton = (Button)findViewById(R.id.writeEventButton);
mReadUserButton.setOnClickListener(this);
mReadEventButton.setOnClickListener(this);
mWriteEventButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
if(v == mReadUserButton){

Cursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null,
null, null, null);
if(userCursor.getCount() > 0){
userCursor.moveToFirst();
String userName = userCursor.getString(userCursor.getColumnIndex("name"));
Toast.makeText(CalendarDemo.this, userName, Toast.LENGTH_LONG).show();
}
}else if(v == mReadEventButton){
Cursor eventCursor = getContentResolver().query(Uri.parse(calanderEventURL), null,
null, null, null);
if(eventCursor.getCount() > 0){
eventCursor.moveToLast();
String eventTitle = eventCursor.getString(eventCursor.getColumnIndex("title"));
Toast.makeText(CalendarDemo.this, eventTitle, Toast.LENGTH_LONG).show();
}
}else if(v == mWriteEventButton){
//獲取要出入的gmail賬戶的id
String calId = "";
Cursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null,
null, null, null);
if(userCursor.getCount() > 0){
userCursor.moveToFirst();
calId = userCursor.getString(userCursor.getColumnIndex("_id"));

}
ContentValues event = new ContentValues();
event.put("title", "與蒼井空小-姐動作交流");
event.put("description", "Frankie受空姐邀請,今天晚上10點以後將在Sheraton動作交流.lol~");
//插入[email protected]這個賬戶
event.put("calendar_id",calId);

Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY,10);
long start = mCalendar.getTime().getTime();
mCalendar.set(Calendar.HOUR_OF_DAY,11);
long end = mCalendar.getTime().getTime();

event.put("dtstart", start);
event.put("dtend", end);
event.put("hasAlarm",1);

Uri newEvent = getContentResolver().insert(Uri.parse(calanderEventURL), event);
long id = Long.parseLong( newEvent.getLastPathSegment() );
ContentValues values = new ContentValues();
values.put( "event_id", id );
//提前10分鍾有提醒
values.put( "minutes", 10 );
getContentResolver().insert(Uri.parse(calanderRemiderURL), values);
Toast.makeText(CalendarDemo.this, "插入事件成功!!!", Toast.LENGTH_LONG).show();
}
}
}

第四步:在AndroidManifest.xml中申請許可權,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tutor.calendardemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".CalendarDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
</manifest>

第五步:運行上述Android工程,查看效果:

9. 如何實現往android手機系統日歷插入數據

首先,要了解一下CalendarProvider,這個知識點大家可以上網網路得到,我就不多說了,我在項目裡面用到了CalendarContract.Events這個表格。這個表保存了特定的事件信息。在這個表中每一行都有單一事件的信息,如事件的標題、位置、開始時間、結束時間等。這個事件能夠發生一次或重復發生多次。會議、提醒和擴展的屬性被保存的獨立的表中,它們都有一個EVENT_ID跟Events表中的_ID進行關聯。

10. 安卓日歷整體布局是怎麼實現的

自定義日歷控制項,支持舊歷、節氣、日期標注、點擊操作 (參考網路上的日歷控制項改寫)
註:將下面的四張資源圖片拷貝到所建包的下一個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

熱點內容
python與unity 發布:2025-07-21 18:47:45 瀏覽:252
腳本玩具 發布:2025-07-21 18:34:54 瀏覽:347
安卓10交互模式是什麼 發布:2025-07-21 18:30:46 瀏覽:994
存儲幾層 發布:2025-07-21 18:20:18 瀏覽:262
安卓手機相冊是哪個 發布:2025-07-21 18:15:13 瀏覽:542
c語言的fork函數 發布:2025-07-21 17:50:05 瀏覽:745
怎麼給文件夾改名字叫什麼 發布:2025-07-21 17:37:22 瀏覽:893
php發包 發布:2025-07-21 17:36:47 瀏覽:4
怎麼配置mc伺服器 發布:2025-07-21 17:35:37 瀏覽:998
androidjson接收 發布:2025-07-21 17:29:12 瀏覽:62