Android自定义日历Calender代码实现

 更新时间:2016年09月09日 15:13:18   作者:u012808234  
这篇文章主要为大家详细介绍了Android自定义日历Calender实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

产品要做签到功能,签到功能要基于一个日历来进行,所以就根据 要求自定义了一个日历

自定义控件相信做android都知道:

(1)首先创建一个类,继承一个容器类或者是一个控件 

(2)然后就是你需要设置的属性等的,在attrs文件夹中 

(3)然后就是在类里边进行属性的设置以及布局等等功能的添加 

其实自定义一个日历问题都不多,很多人都会想到通过一个gridView然后填充就可以,确实是这样,主要是在显示每个月的第一天的位置以及每个月显示多少天有点绕。

思路:通过判断当前星期几然后进行日历的填充,但是填充的大小不能大于当月天数,通过当月第一天是星期几来判断从哪个位置填充。

代码:

package com.example.calenderdemo;

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class CalendarViewAdapter extends BaseAdapter {

 private Context mContext;
 private int mCountDay = 49;
 private int mCurrent_mouth_Countday;
 private int mCurrent_Week;
 private int id[] = { R.string.week7, R.string.week1, R.string.week2,
 R.string.week3, R.string.week4, R.string.week5, R.string.week6 };

 public CalendarViewAdapter(Context context, int countday) {
 this.mContext = context;
 this.mCurrent_Week = Utils.getCurrentMonthStart();
 this.mCurrent_mouth_Countday = countday;
 }

 @Override
 public int getCount() {
 return mCountDay;
 }

 @Override
 public Object getItem(int position) {
 return null;
 }

 @Override
 public long getItemId(int position) {
 return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
 ViewHolder holder = null;
 if (convertView == null) {
 holder = new ViewHolder();
 convertView = LayoutInflater.from(mContext).inflate(
  R.layout.item_calendar, null);
 holder.mTv_calendar_day = (TextView) convertView
  .findViewById(R.id.tv_calendar_day);
 convertView.setTag(holder);
 } else
 holder = (ViewHolder) convertView.getTag();
 if (position <= 6) {
 holder.mTv_calendar_day.setTextColor(Color.BLACK);
 holder.mTv_calendar_day.setTextSize(mContext.getResources()
  .getDimension(R.dimen.text_size_7));
 holder.mTv_calendar_day.setText(mContext.getResources().getString(
  id[position]));
 } else {
 if (mCurrent_Week == 7 && (position -6) <= mCurrent_mouth_Countday) {
 holder.mTv_calendar_day.setText(position-6 + "");
 } else if (position -7>= mCurrent_Week
  && position - mCurrent_Week -6 <= mCurrent_mouth_Countday) {
 holder.mTv_calendar_day.setText(position - mCurrent_Week -6
  + "");
 }
 
 }
 if (position % 7 == 6) {
 holder.mTv_calendar_day.setBackgroundResource(R.drawable.line_right);
 }else if (position % 7 == 0) {
 holder.mTv_calendar_day.setBackgroundResource(R.drawable.line_left);
 }
 return convertView;
 }

 class ViewHolder {
 TextView mTv_calendar_day;
 }
}

把gridView填充了以后一个简单的日历控件就ok了。 

Demo:http://xiazai.jb51.net/201609/yuanma/AndroidCalenderDemo(jb51.net).rar

自定义了一个日历以后就要做签到了,签到只要在自定义的Calendar中稍稍修改下就好了,看下效果图: 

看这还行,然后DEMO:http://xiazai.jb51.net/201609/yuanma/AndroidCalender(jb51.net).rar

添加了几个方法的Demo:http://xiazai.jb51.net/201609/yuanma/Calenderchange(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android RecyclerView加载不同布局简单实现

    Android RecyclerView加载不同布局简单实现

    这篇文章主要为大家详细介绍了Android RecyclerView加载不同布局简单实现,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android中给按钮同时设置背景和圆角示例代码

    Android中给按钮同时设置背景和圆角示例代码

    相信每位Android开发者们都遇到过给按钮设置背景或者设置圆角的需求,但是如果要同时设置背景和圆角该怎么操作才是方便快捷的呢?这篇文章通过示例代码给大家演示了Android中给按钮同时设置背景和圆角的方法,有需要的朋友们可以参考借鉴。
    2016-10-10
  • Android TextView渐变颜色和方向及动画效果的设置详解

    Android TextView渐变颜色和方向及动画效果的设置详解

    TextView的在安卓中可以理解为一个文本视图控件,Android的视图控件的基类是View类,可以理解的TextView是View的子类。我们通常在.XML布局文件中会为文本视图控件指定各种属性来设置它的样式,今天我们要讲的当然不是传统常见的那种,将会带有渐变颜色和方向及动画效果
    2021-11-11
  • Android实现传感器功能

    Android实现传感器功能

    这篇文章主要为大家详细介绍了Android实现传感器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 分享几个Android开发有用的程序代码

    分享几个Android开发有用的程序代码

    本文主要是给大家分享了几个常用而且很实用的程序代码片段,都是个人项目中提取出来的,有需要的小伙伴可以直接拿走使用
    2015-02-02
  • Android Retrofit使用详细教程

    Android Retrofit使用详细教程

    Retrofit是Android用来接口请求的网络框架,内部是基于OkHttp实现的,retrofit负责接口请求的封装,retrofit可以直接将接口数据解析为Bean类、List集合等,直接简化了中间繁琐的数据解析过程,这篇文章主要介绍了Android Retrofit使用详情,需要的朋友可以参考下
    2024-03-03
  • Android编程重写ViewGroup实现卡片布局的方法

    Android编程重写ViewGroup实现卡片布局的方法

    这篇文章主要介绍了Android编程重写ViewGroup实现卡片布局的方法,实例分析新建FlowLayout继承ViewGroup类及设置布局文件实现卡片布局效果的相关技巧,需要的朋友可以参考下
    2016-02-02
  • Android显示系统SurfaceFlinger详解

    Android显示系统SurfaceFlinger详解

    本文详细讲解了Android显示系统SurfaceFlinger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Android开发基础实现音频文件的播放详解

    Android开发基础实现音频文件的播放详解

    这篇文章主要为大家介绍了Android开发基础实现音频文件的播放详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 获取Android应用专属缓存存储目录的实例

    获取Android应用专属缓存存储目录的实例

    今天小编就为大家分享一篇获取Android应用专属缓存存储目录的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论