时间:2021-05-20
Android实现点击签到按钮直接签到,弹出dialog,先上效果图
demo是利用gridview实现的,现附上布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" android:orientation="vertical" android:background="@drawable/shape_btn_white" > <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp" > <ImageView android:id="@+id/iv_front" android:layout_width="30dp" android:layout_height="40dp" android:padding="10dp" android:layout_marginLeft="8dp" android:scaleType="centerCrop" android:layout_alignParentLeft="true" android:layout_centerInParent="true" android:src="@mipmap/icon_sign_front" /> <TextView android:id="@+id/tv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textColor="#2fbbef" android:textSize="15sp" android:text="2016-7-16" /> <ImageView android:id="@+id/iv_next" android:layout_width="30dp" android:layout_height="40dp" android:layout_marginRight="8dp" android:padding="10dp" android:scaleType="centerCrop" android:layout_alignParentRight="true" android:layout_centerInParent="true" android:src="@mipmap/icon_sign_next" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" > <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="日" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="一" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="二" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="三" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="四" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="五" android:textSize="15sp" android:textColor="#888" /> <TextView android:layout_width="40dp" android:layout_height="40dp" android:layout_weight="1" android:gravity="center" android:text="六" android:textSize="15sp" android:textColor="#888" /> </LinearLayout> <GridView android:id="@+id/gv_sign_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#dbdbdb" android:clickable="true" android:clipChildren="true" android:columnWidth="30dp" android:listSelector="@null" android:numColumns="7" android:paddingBottom="1dp" android:stretchMode="columnWidth" android:verticalSpacing="1dp" ></GridView> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#dbdbdb" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="连续签到会有更多积分哦 !" android:textColor="#2a2a2a" android:layout_marginRight="5dp" android:textSize="14sp" /> <TextView android:id="@+id/tv_sign_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="20dp" android:visibility="gone" android:text="3天" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/jifen" android:textColor="#2a2a2a" android:visibility="gone" android:layout_marginRight="5dp" android:textSize="14sp" /> <TextView android:id="@+id/tv_jifen_num" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="100" /> </LinearLayout> </LinearLayout> </LinearLayout>效果图:
dialog中的主要代码:
public class SignDataDialog extends Dialog implements View.OnClickListener{ private GridView gridView; private ImageView iv_front,iv_next; private TextView tv_date,tv_sign_days,tv_jifen; private MyCalendarAdapter adapter; private SpecialCalendar sp; private Context context; private SignDateModle modle; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d"); private String systime; private int year,month; String[] b=new String[]{ "0","0","0","0","0","0","0", "0","0","0","0","0","0","0", "0","0","0","0","0","0","0", "0","0","0","0","0","0","0", "0","0","0","0","0","0","0", "0","0","0","0","0","0","0" }; public SignDataDialog(Context context,SignDateModle modle) { super(context); this.context=context; this.modle=modle; setContentView(R.layout.dialog_sign_data); Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.gravity = Gravity.CENTER; window.setBackgroundDrawableResource(android.R.color.transparent); window.setAttributes(params); setCanceledOnTouchOutside(true); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); sp=new SpecialCalendar(); Date date = new Date(); systime = sdf.format(date); year=Integer.valueOf(systime.split("-")[0]); month=Integer.valueOf(systime.split("-")[1]); iv_front= (ImageView) findViewById(R.id.iv_front); iv_next= (ImageView) findViewById(R.id.iv_next); gridView= (GridView) findViewById(R.id.gv_sign_date); tv_date= (TextView) findViewById(R.id.tv_date); tv_sign_days= (TextView) findViewById(R.id.tv_sign_num); tv_jifen= (TextView) findViewById(R.id.tv_jifen_num); tv_date.setText(systime); iv_front.setOnClickListener(this); iv_next.setOnClickListener(this); if (modle!=null) { String dates=modle.getDateTime(); adapter = new MyCalendarAdapter(context, Integer.valueOf(dates.split("-")[0]), Integer.valueOf(dates.split("-")[1]), 17, getStrings(modle)); gridView.setAdapter(adapter); } } public String[] getStrings(SignDateModle modle){ int year=Integer.valueOf(modle.getDateTime().split("-")[0]); int moth=Integer.valueOf(modle.getDateTime().split("-")[1]); int start=sp.getWeekdayOfMonth(year,moth); for (int i=0;i<modle.getDatas().size();i++){ if (modle.getDatas().get(i).getStatus()==1){ b[i]=String.valueOf(1); } } return b; } @Override public void onClick(View v) { switch (v.getId()){ case R.id.iv_front: redMonth(); tv_date.setText(year+"-"+month+"-"+systime.split("-")[2]); changeOtherMoth(year, month); break; case R.id.iv_next: addMonth(); tv_date.setText(year+"-"+month+"-"+systime.split("-")[2]); changeOtherMoth(year,month); break; } } public void addMonth(){ month++; if (month==13){ month=1; year++; } } public void redMonth(){ month--; if (month==0){ month=12; year--; } } public void changeOtherMoth(int year,int moth){ if (CMethod.isNet(context)){ JSONObject jsonObject= NetJsonModle.getJsonObject(context,"528"); try { jsonObject.put("reporterId",new LastLoginUtils(context).getReporterId()); jsonObject.put("time", year + "-" + moth); HttpUtils.PostDataToWeb(UrlAddressUrils.CODE_OTHER, AppConstants.SIGN_DATA_INFO, jsonObject, new HttpClientListener() { @Override public void onSuccess(String result) { Gson gson = new Gson(); SignDateModle m = gson.fromJson(result, SignDateModle.class); for (int i = 0; i < b.length; i++) { b[i] = "0"; } if (m != null) { String dates = m.getDateTime(); adapter = new MyCalendarAdapter(context, Integer.valueOf(dates.split("-")[0]), Integer.valueOf(dates.split("-")[1]), 17, getStrings(m)); gridView.setAdapter(adapter); } } @Override public void onFailure(String result) { } @Override public void onError() { } }); } catch (JSONException e) { e.printStackTrace(); } }else { T.s("请检查网络是否连接"); } }其计算日期的主要代码在适配器中:
积分当然是交给后台处理返回了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言之前实现过《Android可签到的日历控件》的功能,跟这篇一样都是实现签到打卡功能,这篇实现的是按月进行打卡做标识,本篇内容实现的按周进行签到打卡。实现签到
产品要做签到功能,签到功能要基于一个日历来进行,所以就根据要求自定义了一个日历自定义控件相信做android都知道:(1)首先创建一个类,继承一个容器类或者是一
每日签到的功能,供大家参考,具体内容如下首次签到获得1个积分,第二次签到获得2个积分,第三次签到获得3个积分,以此类推但是签到必须每天连续积分才可以递增,如果有
在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动。这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤。1.
本文实例讲述了JS实现带阴历的日历功能。分享给大家供大家参考,具体如下:工作中要写一个带阴历的日历,自己调研了怎么做日历。一.表格行数问题既然要显示日期表格的话