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();
}
});