android系統日歷控制項
Ⅰ android CalendarView 如何使用
在Android平台3.0中才新增了日歷視圖控制項,可以顯示網格狀的日歷內容,那麼對於3.0以下的版本要使用日歷控制項只能藉助第三方,目前用的最多的是CalendarView。
android.widget.CalendarView是從android.widget.FrameLayout中繼承。
CalendarView 類提供了基本的日歷設置方法:
long getDate() 獲取從1970年,1月1日,0點0分0秒到現在的毫秒數,因為返回是long型最終只能截止到2038年
int getFirstDayOfWeek() //獲取當天是本周的第幾天,Android123提示返回的定義在java.util.Calendar類中,比如Calendar.Monday為星期一,定義值為2。
long getMaxDate() //獲取CalendarView支持1970年到那天的最大天數
long getMinDate() //獲取CalendarView支持1970年到那天的最小天數
boolean getShowWeekNumber() //獲取是否顯示星期號
boolean isEnabled() //是否顯示本日歷視圖
public void setDate (long date, boolean animate, boolean center) //設置選擇日期到1970年的描述
void setDate(long date) //設置選擇的日期描述到1970年
void setEnabled(boolean enabled) //設置是否啟用視圖
void setFirstDayOfWeek(int firstDayOfWeek) //設置本周起始天數
void setMaxDate(long maxDate)
void setMinDate(long minDate)
void setOnDateChangeListener(CalendarView.OnDateChangeListener listener) //日歷視圖修改的介面,這個介紹看下面。
void setShowWeekNumber(boolean showWeekNumber) //設置是否顯示周號
有關日歷控制項CalendarView的設置介面 android.widget.CalendarView.OnDateChangeListener 只實現了一個回調方法void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth)。
這四個參數的具體介紹為
view The view associated with this listener.
year The year that was set.
month The month that was set [0-11].
dayOfMonth The day of the month that was set.
Ⅱ android 2.2以上版本中的CalendarView控制項怎麼用
添加日歷 Activity 到 AndroidManifest.xml
<activity android:name="com.exina.android.calendar.CalendarActivity">
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.exina.android.calendar.date" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.exina.android.calendar.date" />
</intent-filter>
</activity>
拷貝如下源碼到項目 src 目錄
com/exina/android/calendar/CalendarActivity.java
com/exina/android/calendar/CalendarView.java
com/exina/android/calendar/Cell.java
拷貝如下資源文件到項目 res 目錄
layout: main.xml
drawable: background.png, calendar_week.png, typeb_calendar_today.png
values: dimens.xml
顯示日歷
使用 Intent 簡單的調用日歷組件
startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(null, CalendarActivity.MIME_TYPE));
使用日歷來選擇日期
通過使用 startActivityForResult 來顯示日歷並返回選擇的日期
// 1) start calendar view
startActivityForResult(new Intent(Intent.ACTION_PICK).setDataAndType(null, CalendarActivity.MIME_TYPE), 100);
// 2) implement your own onActivityResult method to handle returned date
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK) {
int year = data.getIntExtra("year", 0); // get number of year
int month = data.getIntExtra("month", 0); // get number of month 0..11
int day = data.getIntExtra("day", 0); // get number of day 0..31
// format date and display on screen
final Calendar dat = Calendar.getInstance();
dat.set(Calendar.YEAR, year);
dat.set(Calendar.MONTH, month);
dat.set(Calendar.DAY_OF_MONTH, day);
// show result
SimpleDateFormat format = new SimpleDateFormat("yyyy MMM dd");
Toast.makeText(TestActivity.this, format.format(dat.getTime()), Toast.LENGTH_LONG).show();
}
}
Ⅲ 安卓日歷整體布局是怎麼實現的
自定義日歷控制項,支持舊歷、節氣、日期標注、點擊操作 (參考網路上的日歷控制項改寫)
註:將下面的四張資源圖片拷貝到所建包的下一個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
Ⅳ 簡單實用的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
Ⅳ Android 開源 日歷 Calendar 仿小米
原文地址: https://github.com/MagicMashRoom/SuperCalendar
簡介 由於項目的需求,研究了眾多日歷軟體。本軟體是一款高仿小米的自定義日歷 > 控制項,周月視圖平滑滾動,平滑切換,可以在 xml 文件中進行屬性的配置定製,加入你自己的 RecyclerView 後,實現日歷與列表的無縫連接。
使用此方法給MonthPager添加上相關監聽
Ⅵ 32個實用酷炫的Android開源UI框架
1.Side-Menu.Android
分類側滑菜單 , Yalantis 出品。
項目地址: https://github.com/Yalantis/Side-Menu.Android
2.Context-Menu.Android
可以方便快速集成漂亮帶有動畫效果的上下文菜單, Yalantis 出品。
項目地址: https://github.com/Yalantis/Context-Menu.Android
3.Pull-to-Refresh.Rentals-Android
提供一個簡單可以自定義的 下拉刷新 實現,Yalantis 出品。
項目地址: https://github.com/Yalantis/Pull-to-Refresh.Rentals-Android
4.Titanic
可以顯示水位上升下降的TextView
項目地址: https://github.com/RomainPiel/Titanic
5.AndroidSwipeLayout
滑動Layout ,支持單個View,ListView,GridView
項目地址: https://github.com/daimajia/AndroidSwipeLayout
Demo地址: Download Demo
6.Android Typeface Helper
可以幫你輕松實現自定義字體的庫
項目地址: https://github.com/norbsoft/android-typeface-helper
7.android-lockpattern
Android的圖案密碼解鎖
項目地址: https://code.google.com/p/android-lockpattern/
Demo地址: https://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo
文檔介紹: https://code.google.com/p/android-lockpattern/wiki/QuickUse
APP示例:Android開機的圖案密碼解鎖,支付寶的密碼解鎖
8.ToggleButton
狀態切換的 Button,類似 iOS,用 View 實現
項目地址: https://github.com/zcweng/ToggleButton
9.WilliamChart
繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,並且支持 Android 2.2及以上的系統。
項目地址: https://github.com/diogobernardino/WilliamChart
Demo地址: https://play.google.com/store/apps/details?id=com.db.williamchartdemo
Demo項目: https://github.com/diogobernardino/WilliamChart/tree/master/sample
10.實現滑動ViewPager漸變背景色
項目地址: https://github.com/TaurusXi/GuideBackgroundColorAnimation
11.Euclid
用戶簡歷界面, Yalantis 出品。
項目地址: https://github.com/Yalantis/Euclid
12. InstaMaterial
Instagram的一組Material 風格的概念設計
項目地址: https://github.com/frogermcs/InstaMaterial
13. SpringIndicator
使用bezier實現粘連效果的頁面指示
項目地址: https://github.com/chenupt/SpringIndicator
14. BezierDemo
仿qq消息氣泡拖拽 消失的效果。
項目地址: https://github.com/chenupt/BezierDemo
15. FoldableLayout
折疊的信紙被打開一樣的動畫效果
項目地址: https://github.com/alexvasilkov/FoldableLayout
16.Taurus
下拉刷新,Yalantis 出品。(是不是有點似曾相識呢?)
項目地址: https://github.com/Yalantis/Taurus
17. PersistentSearch
在點擊搜索的時候控制項在原有位置顯示輸入框。
項目地址: https://github.com/Quinny898/PersistentSearch
18. circular-progress-button
帶進度顯示的Button
項目地址: https://github.com/dmytrodanylyk/circular-progress-button
19. discrollview
當上下滾動的時候子元素會呈現不同動畫效果的scrollView,網頁上稱之為:視差滾動
項目地址: https://github.com/flavienlaurent/discrollview
20. sweet-alert-dialog
一個帶動畫效果的 自定義對話框樣式
項目地址: https://github.com/pedant/sweet-alert-dialog
21. android-floating-action-button
Material Desig風格的 浮動操作按鈕
項目地址: https://github.com/futuresimple/android-floating-action-button
22. android-collapse-calendar-view
可以在月視圖與周視圖之間切換的calendar控制項
項目地址: https://github.com/blazsolar/android-collapse-calendar-view
22. android-collapse-calendar-view
可以在月視圖與周視圖之間切換的calendar控制項
項目地址: https://github.com/blazsolar/android-collapse-calendar-view
23. NumberProgressBar
個簡約性感的數字進度條
項目地址: https://github.com/daimajia/NumberProgressBar
24. CircularProgressView
CircularProgressView 是通過自定義view的方式實現的Material風格的載入提示控制項,兼容任何版本。
項目地址: https://github.com/rahatarmanahmed/CircularProgressView
25. OriSim3D-Android
opengl 實現了各種折紙效果,模擬了從一張紙折疊成一條船的整個過程
項目地址: https://github.com/RemiKoutcherawy/OriSim3D-Android
26、萬能日歷控制項:CalendarView
GitHub: https://github.com/huanghaibin-dev/CalendarView
中文使用文檔: https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md
27、大圖查看器: BigImage ImageView ViewPager
Github: https://github.com/SherlockGougou/BigImageViewPager
地址: https://www.jianshu.com/p/b15e65791c3f
支持超長圖、超大圖的圖片瀏覽器,優化內存,支持手勢放大、下拉關閉、查看原圖、載入百分比、保存圖片等功能。現已支持androidx。
28、安卓工具包androidUntilCode(安卓必備)
Github: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md
29、萬能適配器-BRAVH
官網: http://www.recyclerview.org
GitHub: https://github.com/CymChad/BaseRecyclerViewAdapterHelper
RecyclerView
作為Android最常用的控制項之一,是否常常為「她」操碎了心
BRVAH受益群體是所有Android開發者,希望更多開發者能夠一起來把這個項目做得更好幫助更多人
30、智能刷新控制項--SmartRefreshLayout
GitHub: https://github.com/scwang90/SmartRefreshLayout
中文: https://gitee.com/scwang90/SmartRefreshLayout
SmartRefreshLayout以打造一個強大,穩定,成熟的下拉刷新框架為目標,並集成各種的炫酷、多樣、實用、美觀的Header和Footer。 正如名字所說,SmartRefreshLayout是一個「聰明」或者「智能」的下拉刷新布局,由於它的「智能」,它不只是支持所有的View,還支持多層嵌套的視圖結構。 它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了現在流行的各種刷新布局的優點,包括谷歌官方的 SwipeRefreshLayout , 其他第三方的 Ultra-Pull-To-Refresh 、 TwinklingRefreshLayout 。 還集成了各種炫酷的 Header 和 Footer。
31、內存泄漏檢測工具--leakcanary
使用方式: https://www.jianshu.com/p/b83ddffcb3b5
LeakCanary是Square公司基於MAT開源的一個工具,用來檢測Android App中的內存泄露問題。官方地址: https://github.com/square/leakcanary
32、 1218683832 / AndroidSlidingUpPanel
SlidingUpPanelLayout:可以上下滑動的菜單布
https://github.com/1218683832/AndroidSlidingUpPanel
Ⅶ Android控制項<第十二篇>:可放棄的原生日歷控制項--CalendarView
【問題一】 卡頓問題
有人打開CalendarView會發生卡頓現象,不過這個問題也有人找到解決方案。如下:
解決Android CalendarView顯示卡頓的問題
【問題二】 獲取不到日期問題
在某些手機上,會發生獲取不到日期的問題,這個問題是非常嚴重的,因為系統兼容問題導致,這個問題目前沒有解決方案
【問題三】 樣式不一致問題
CalendarView的樣式受到系統的影響,在不同的手機上可能樣式不一樣。
比如,在布局文件中寫一個最簡單的CalendarView布局
但是,在手機上的樣式是這樣的:
總之,一般項目中使用日歷控制項都會將原生控制項CalendarView排除在外。
[本章完...]
Ⅷ android studio 日歷控制項怎麼簡單些
每個安卓系統自帶的日歷都不盡相同,而且有些日歷為了節省內存過於精簡,是沒有這種功能的。如果可以做到的一般會有個新建的按鈕,新建日程提醒。在更多按鈕可以設置提醒的方式。首先你要自定義一個控制項,一般採用繼承原有控制項的方式,然後在布局文件使用你要用的自定義控制項,需要包含包名,再就是在activity中寫控制項的控制代碼。可以看看安卓巴士教程:http://www.apkbus.com/forum-96-1.html
Ⅸ android日歷控制項月份是英文
將你的模擬器的語言換成中文
Ⅹ android怎麼把3.0自帶日歷控制項calendarview每個日期按鈕設置事件,如跳轉之類的。
CalendarView cv =(CalendarView)findViewById(R.id.calendarView1);
cv.setOnDateChangeListener(new OnDateChangeListener() {
publicvoid onSelectedDayChange(CalendarView view, int year, int month,int dayOfMonth) {
Toast.makeText(MainActivity.this, "onSelectedDayChange", Toast.LENGTH_LONG).show();
}
});