Android简单实现app每月签到功能

所属分类: 软件编程 / Android 阅读数: 42
收藏 0 赞 0 分享

本文实例为大家分享了Android实现app每月签到功能的具体代码,供大家参考,具体内容如下

先上一张效果图:

其中这些签到的效果图是在网上找的,然后重要用到的控件就是 GridvVew 了, 代码很简单,只有3个代码文件:

MainActivity.class 文件

package zhanghuan.cn.checkdesign;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.TextView;
 
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
 
public class MainActivity extends AppCompatActivity {
 private List<CheckBean> checkBeanList;
 private MyAdapter mAdapter;
 private GridView mGridview;
 private TextView monthTxt;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initDate();
 }
 
 private void initDate() {
 
  Calendar calendar = Calendar.getInstance(Locale.CHINA);
  int month = calendar.get(Calendar.MONTH) + 1;
  int day = calendar.getActualMaximum(Calendar.DATE); // 获取当前月的天数
 
  checkBeanList = new ArrayList<CheckBean>();
  for (int i = 0; i < day + 1; i++) {
   CheckBean checkBean = new CheckBean();
   if ((int) (Math.random() * 20 % 4) == 3) {
    checkBean.day = i;
    checkBean.check_status = CheckBean.CHECKED;
   } else if ((int) (Math.random() * 20 % 4) == 2) {
    checkBean.day = i;
    checkBean.check_status = CheckBean.CHECK_NO;
   } else {
    checkBean.day = i;
    checkBean.check_status = CheckBean.CHECK_WAIT;
   }
 
   checkBeanList.add(checkBean);
  }
 
  monthTxt = (TextView)findViewById(R.id.item_month);
  if (month < 1 || month > 12) {
   month = 1;
  }
  monthTxt.setText("当前签到月份是:" + month);
 
  mAdapter = new MyAdapter(MainActivity.this);
  mAdapter.setListDate(checkBeanList);
 
  mGridview = (GridView) findViewById(R.id.main_gridview);
  mGridview.setAdapter(mAdapter);
 }
}

适配器文件:MyAdapter.class 

package zhanghuan.cn.checkdesign;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
 
import java.util.List;
 
/**
 * Created by zhanghuan on 2016/3/8.
 */
public class MyAdapter extends BaseAdapter {
 private Context mContext;
 private List<CheckBean> checkBeanList;
 
 public MyAdapter(Context context) {
  mContext = context;
 }
 
 public void setListDate(List<CheckBean> checklist) {
  checkBeanList = checklist;
 }
 
 @Override
 public int getCount() {
  return checkBeanList.size();
 }
 
 @Override
 public Object getItem(int position) {
  return checkBeanList.get(position);
 }
 
 @Override
 public long getItemId(int position) {
  return position;
 }
 
 @Override
 public View getView(final int position, View convertView, ViewGroup parent) {
  final MyHoder hoder;
 
  if (convertView == null) {
   convertView = LayoutInflater.from(mContext).inflate(R.layout.check_item, null);
   hoder = new MyHoder();
   hoder.day = (TextView) convertView.findViewById(R.id.item_day);
   hoder.status = (ImageView) convertView.findViewById(R.id.item_image);
   convertView.setTag(hoder);
  } else {
   hoder = (MyHoder) convertView.getTag();
  }
 
  hoder.day.setText("day" + checkBeanList.get(position).day);
  if (checkBeanList.get(position).check_status == CheckBean.CHECK_NO) {
   hoder.status.setImageResource(R.mipmap.check_no);
   hoder.status.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     Toast.makeText(mContext, "恭喜你,签到成功!", Toast.LENGTH_SHORT).show();
     hoder.status.setImageResource(R.mipmap.checked);
     hoder.status.setClickable(false);
     checkBeanList.get(position).check_status = CheckBean.CHECKED;
     /* 在此做一些签到请求的处理 */
    }
   });
  } else if (checkBeanList.get(position).check_status == CheckBean.CHECK_WAIT) {
   hoder.status.setImageResource(R.mipmap.check_wait);
  } else if (checkBeanList.get(position).check_status == CheckBean.CHECKED) {
   hoder.status.setImageResource(R.mipmap.checked);
  }
  return convertView;
 }
 
 private static class MyHoder {
  TextView day;
  ImageView status;
 }
}

CheckBean.class 文件:

package zhanghuan.cn.checkdesign;
 
import java.io.Serializable;
 
/**
 * Created by zhanghuan on 2016/3/8.
 */
public class CheckBean implements Serializable {
 // 根据自己的需求可以做补签的字段设置
 
 public static final int CHECKED = 3; //已签到
 public static final int CHECK_NO = 2; //没有签到
 public static final int CHECK_WAIT = 1; //等待签到 (时间没到无法签到)
 
 public int day;
 public int check_status;
}

源代码下载:点击打开链接

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

更多精彩内容其他人还在看

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享

TextView显示系统时间(时钟功能带秒针变化

用System.currentTimeMillis()可以获取系统当前的时间,我们可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间,可以做一个时钟的功能
收藏 0 赞 0 分享

Android用ListView显示SDCard文件列表的小例子

本文简单实现了用ListView显示SDCard文件列表,目录的回退等功能暂不讨论,获取文件列表,files即为所选择目录下的所有文件列表
收藏 0 赞 0 分享

Android拦截外拨电话程序示例

这篇文章主要介绍了Android拦截外拨电话的示例,大家参考使用吧
收藏 0 赞 0 分享

通过Html网页调用本地安卓(android)app程序代码

如何使用html网页和本地app进行传递数据呢?经过研究,发现还是有方法的,总结了一下,大致有一下几种方式
收藏 0 赞 0 分享

android Textview文字监控(Textview使用方法)

以手机号充值为例,当用户输入最后一位数时候,进行汇率的变换,本文就实现类似这样的功能
收藏 0 赞 0 分享

Android ListView长按弹出菜单二种实现方式示例

这篇文章主要介绍了Android ListView长按弹出菜单的方法,大家参考实现
收藏 0 赞 0 分享
查看更多