经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android简单实现app每月签到功能
来源:jb51  时间:2018/11/30 9:15:18  对本文有异议

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

先上一张效果图:

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

MainActivity.class 文件

  1. package zhanghuan.cn.checkdesign;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.widget.GridView;
  5. import android.widget.TextView;
  6. import java.util.ArrayList;
  7. import java.util.Calendar;
  8. import java.util.List;
  9. import java.util.Locale;
  10. public class MainActivity extends AppCompatActivity {
  11. private List<CheckBean> checkBeanList;
  12. private MyAdapter mAdapter;
  13. private GridView mGridview;
  14. private TextView monthTxt;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. initDate();
  20. }
  21. private void initDate() {
  22. Calendar calendar = Calendar.getInstance(Locale.CHINA);
  23. int month = calendar.get(Calendar.MONTH) + 1;
  24. int day = calendar.getActualMaximum(Calendar.DATE); // 获取当前月的天数
  25. checkBeanList = new ArrayList<CheckBean>();
  26. for (int i = 0; i < day + 1; i++) {
  27. CheckBean checkBean = new CheckBean();
  28. if ((int) (Math.random() * 20 % 4) == 3) {
  29. checkBean.day = i;
  30. checkBean.check_status = CheckBean.CHECKED;
  31. } else if ((int) (Math.random() * 20 % 4) == 2) {
  32. checkBean.day = i;
  33. checkBean.check_status = CheckBean.CHECK_NO;
  34. } else {
  35. checkBean.day = i;
  36. checkBean.check_status = CheckBean.CHECK_WAIT;
  37. }
  38. checkBeanList.add(checkBean);
  39. }
  40. monthTxt = (TextView)findViewById(R.id.item_month);
  41. if (month < 1 || month > 12) {
  42. month = 1;
  43. }
  44. monthTxt.setText("当前签到月份是:" + month);
  45. mAdapter = new MyAdapter(MainActivity.this);
  46. mAdapter.setListDate(checkBeanList);
  47. mGridview = (GridView) findViewById(R.id.main_gridview);
  48. mGridview.setAdapter(mAdapter);
  49. }
  50. }

适配器文件:MyAdapter.class 

  1. package zhanghuan.cn.checkdesign;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.BaseAdapter;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import android.widget.Toast;
  10. import java.util.List;
  11. /**
  12. * Created by zhanghuan on 2016/3/8.
  13. */
  14. public class MyAdapter extends BaseAdapter {
  15. private Context mContext;
  16. private List<CheckBean> checkBeanList;
  17. public MyAdapter(Context context) {
  18. mContext = context;
  19. }
  20. public void setListDate(List<CheckBean> checklist) {
  21. checkBeanList = checklist;
  22. }
  23. @Override
  24. public int getCount() {
  25. return checkBeanList.size();
  26. }
  27. @Override
  28. public Object getItem(int position) {
  29. return checkBeanList.get(position);
  30. }
  31. @Override
  32. public long getItemId(int position) {
  33. return position;
  34. }
  35. @Override
  36. public View getView(final int position, View convertView, ViewGroup parent) {
  37. final MyHoder hoder;
  38. if (convertView == null) {
  39. convertView = LayoutInflater.from(mContext).inflate(R.layout.check_item, null);
  40. hoder = new MyHoder();
  41. hoder.day = (TextView) convertView.findViewById(R.id.item_day);
  42. hoder.status = (ImageView) convertView.findViewById(R.id.item_image);
  43. convertView.setTag(hoder);
  44. } else {
  45. hoder = (MyHoder) convertView.getTag();
  46. }
  47. hoder.day.setText("day" + checkBeanList.get(position).day);
  48. if (checkBeanList.get(position).check_status == CheckBean.CHECK_NO) {
  49. hoder.status.setImageResource(R.mipmap.check_no);
  50. hoder.status.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View v) {
  53. Toast.makeText(mContext, "恭喜你,签到成功!", Toast.LENGTH_SHORT).show();
  54. hoder.status.setImageResource(R.mipmap.checked);
  55. hoder.status.setClickable(false);
  56. checkBeanList.get(position).check_status = CheckBean.CHECKED;
  57. /* 在此做一些签到请求的处理 */
  58. }
  59. });
  60. } else if (checkBeanList.get(position).check_status == CheckBean.CHECK_WAIT) {
  61. hoder.status.setImageResource(R.mipmap.check_wait);
  62. } else if (checkBeanList.get(position).check_status == CheckBean.CHECKED) {
  63. hoder.status.setImageResource(R.mipmap.checked);
  64. }
  65. return convertView;
  66. }
  67. private static class MyHoder {
  68. TextView day;
  69. ImageView status;
  70. }
  71. }

CheckBean.class 文件:

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

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号