소스 검색

个人资料,领红包,抢任务,合并代码

yuanshenglan 7 년 전
부모
커밋
5b8ee571c3
43개의 변경된 파일3207개의 추가작업 그리고 0개의 파일을 삭제
  1. 148 0
      app/src/main/java/com/sheep/gamegroup/dateview/DataPickerDialog.java
  2. 284 0
      app/src/main/java/com/sheep/gamegroup/dateview/DatePickerDialog.java
  3. 202 0
      app/src/main/java/com/sheep/gamegroup/dateview/DateUtil.java
  4. 12 0
      app/src/main/java/com/sheep/gamegroup/dateview/LoopListener.java
  5. 25 0
      app/src/main/java/com/sheep/gamegroup/dateview/LoopRunnable.java
  6. 64 0
      app/src/main/java/com/sheep/gamegroup/dateview/LoopTimerTask.java
  7. 403 0
      app/src/main/java/com/sheep/gamegroup/dateview/LoopView.java
  8. 32 0
      app/src/main/java/com/sheep/gamegroup/dateview/LoopViewGestureListener.java
  9. 61 0
      app/src/main/java/com/sheep/gamegroup/dateview/MTimer.java
  10. 35 0
      app/src/main/java/com/sheep/gamegroup/dateview/MessageHandler.java
  11. 56 0
      app/src/main/java/com/sheep/gamegroup/dateview/MyTimerTask.java
  12. 128 0
      app/src/main/java/com/sheep/gamegroup/dateview/TimePickerDialog.java
  13. 634 0
      app/src/main/java/com/sheep/gamegroup/model/entity/RobTask.java
  14. 16 0
      app/src/main/res/anim/slide_in_bottom.xml
  15. 14 0
      app/src/main/res/anim/slide_out_bottom.xml
  16. BIN
      app/src/main/res/drawable-xhdpi/invition_redpackage.png
  17. 12 0
      app/src/main/res/drawable/border_circle_radius.xml
  18. 6 0
      app/src/main/res/drawable/dialog_white_radius.xml
  19. 15 0
      app/src/main/res/drawable/dotted_line.xml
  20. 15 0
      app/src/main/res/drawable/shape_get_redpackage.xml
  21. 9 0
      app/src/main/res/drawable/shape_get_redpackage_text_white.xml
  22. 13 0
      app/src/main/res/drawable/shape_get_redpackage_text_yellow.xml
  23. 31 0
      app/src/main/res/drawable/wheel_bg.xml
  24. 12 0
      app/src/main/res/drawable/wheel_val.xml
  25. 107 0
      app/src/main/res/layout/activity_edit_persional_info.xml
  26. 56 0
      app/src/main/res/layout/dialog_change_red_package.xml
  27. 57 0
      app/src/main/res/layout/dialog_redpackage_after_invitation.xml
  28. 88 0
      app/src/main/res/layout/layout_picker_data.xml
  29. 138 0
      app/src/main/res/layout/layout_picker_date.xml
  30. 116 0
      app/src/main/res/layout/layout_picker_region.xml
  31. 117 0
      app/src/main/res/layout/layout_picker_time.xml
  32. 42 0
      app/src/main/res/layout/pop_choice_sex.xml
  33. 41 0
      app/src/main/res/layout/pop_get_redpackage.xml
  34. 112 0
      app/src/main/res/layout/pop_robduty.xml
  35. 106 0
      app/src/main/res/layout/show_popup_window.xml
  36. BIN
      app/src/main/res/mipmap-xhdpi/get_redpackage_success.png
  37. BIN
      app/src/main/res/mipmap-xhdpi/huanyige.png
  38. BIN
      app/src/main/res/mipmap-xhdpi/invition_redpackage.png
  39. BIN
      app/src/main/res/mipmap-xhdpi/lijiq.png
  40. BIN
      app/src/main/res/mipmap-xhdpi/order_manager.png
  41. BIN
      app/src/main/res/mipmap-xhdpi/qiangrew_bg.png
  42. BIN
      app/src/main/res/mipmap-xhdpi/red_package_floatbtn.png
  43. BIN
      app/src/main/res/mipmap-xhdpi/xinjin_label.png

+ 148 - 0
app/src/main/java/com/sheep/gamegroup/dateview/DataPickerDialog.java

@@ -0,0 +1,148 @@
+package com.sheep.gamegroup.dateview;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DataPickerDialog extends Dialog {
+
+    private Params params;
+
+    public DataPickerDialog(Context context, int themeResId) {
+        super(context, themeResId);
+    }
+
+    private void setParams(DataPickerDialog.Params params) {
+        this.params = params;
+    }
+
+
+    public void setSelection(String itemValue) {
+        if (params.dataList.size() > 0) {
+            int idx = params.dataList.indexOf(itemValue);
+            if (idx >= 0) {
+                params.initSelection = idx;
+                params.loopData.setCurrentItem(params.initSelection);
+            }
+        }
+    }
+
+    public interface OnDataSelectedListener {
+        void onDataSelected(String itemValue, int position);
+        void onCancel();
+    }
+
+    private static final class Params {
+        private boolean shadow = true;
+        private boolean canCancel = true;
+        private LoopView loopData;
+        private String title;
+        private String unit;
+        private int initSelection;
+        private OnDataSelectedListener callback;
+        private final List<String> dataList = new ArrayList<>();
+    }
+
+    public static class Builder {
+        private final Context context;
+        private final DataPickerDialog.Params params;
+
+        public Builder(Context context) {
+            this.context = context;
+            params = new DataPickerDialog.Params();
+        }
+
+        private final String getCurrDateValue() {
+            return params.loopData.getCurrentItemValue();
+        }
+
+        public Builder setData(List<String> dataList) {
+            params.dataList.clear();
+            params.dataList.addAll(dataList);
+            return this;
+        }
+
+        public Builder setTitle(String title) {
+            params.title = title;
+            return this;
+        }
+
+        public Builder setUnit(String unit) {
+            params.unit = unit;
+            return this;
+        }
+
+        public Builder setSelection(int selection) {
+            params.initSelection = selection;
+            return this;
+        }
+
+        public Builder setOnDataSelectedListener(OnDataSelectedListener onDataSelectedListener) {
+            params.callback = onDataSelectedListener;
+            return this;
+        }
+
+
+        public DataPickerDialog create() {
+            final DataPickerDialog dialog = new DataPickerDialog(context, params.shadow ? R.style.Theme_Light_NoTitle_Dialog : R.style.Theme_Light_NoTitle_NoShadow_Dialog);
+            View view = LayoutInflater.from(context).inflate(R.layout.layout_picker_data, null);
+
+            if (!TextUtils.isEmpty(params.title)) {
+                TextView txTitle = (TextView) view.findViewById(R.id.tx_title);
+                txTitle.setText(params.title);
+                txTitle.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        dialog.dismiss();
+                        params.callback.onCancel();
+                    }
+                });
+            }
+            if (!TextUtils.isEmpty(params.unit)) {
+                TextView txUnit = (TextView) view.findViewById(R.id.tx_unit);
+                txUnit.setText(params.unit);
+            }
+
+            final LoopView loopData = (LoopView) view.findViewById(R.id.loop_data);
+            loopData.setArrayList(params.dataList);
+            loopData.setNotLoop();
+            if (params.dataList.size() > 0) loopData.setCurrentItem(params.initSelection);
+            view.findViewById(R.id.tx_finish).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    dialog.dismiss();
+                    params.callback.onDataSelected(getCurrDateValue(),loopData.getCurrentItem());
+                }
+            });
+
+            Window win = dialog.getWindow();
+            win.getDecorView().setPadding(0, 0, 0, 0);
+            WindowManager.LayoutParams lp = win.getAttributes();
+            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            win.setAttributes(lp);
+            win.setGravity(Gravity.BOTTOM);
+            win.setWindowAnimations(R.style.Rising);
+
+            dialog.setContentView(view);
+            dialog.setCanceledOnTouchOutside(params.canCancel);
+            dialog.setCancelable(params.canCancel);
+
+            params.loopData = loopData;
+            dialog.setParams(params);
+
+            return dialog;
+        }
+    }
+}

+ 284 - 0
app/src/main/java/com/sheep/gamegroup/dateview/DatePickerDialog.java

@@ -0,0 +1,284 @@
+package com.sheep.gamegroup.dateview;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+
+public class DatePickerDialog extends Dialog {
+
+    private static  int MIN_YEAR = 1900;
+    private static  int MAX_YEAR = 2100;
+    private Params params;
+
+    public DatePickerDialog(Context context, int themeResId) {
+        super(context, themeResId);
+    }
+
+    private void setParams(DatePickerDialog.Params params) {
+        this.params = params;
+    }
+
+    public interface OnDateSelectedListener {
+         void onDateSelected(int[] dates);
+         void onCancel();
+    }
+
+
+
+    private static final class Params {
+        private boolean shadow = true;
+        private boolean canCancel = true;
+        private LoopView loopYear, loopMonth, loopDay;
+        private OnDateSelectedListener callback;
+    }
+
+    public static class Builder {
+        private final Context context;
+        private final DatePickerDialog.Params params;
+        private Integer minYear;
+        private Integer maxYear;
+        private Integer selectYear;
+        private Integer selectMonth;
+        private Integer selectDay;
+        private Integer minMonth;
+        private Integer maxMonth;
+        private Integer minDay;
+        private Integer maxDay;
+
+        public Builder(Context context) {
+            this.context = context;
+            params = new DatePickerDialog.Params();
+        }
+
+        public Builder setMinYear(int year){
+            minYear=year;
+            return this;
+        }
+
+        public Builder setMaxYear(int year){
+            maxYear=year;
+            return this;
+        }
+
+        public Builder setMinMonth(int month){
+            minMonth=month;
+            return this;
+        }
+
+        public Builder setMaxMonth(int month){
+            maxMonth=month;
+            return this;
+        }
+
+        public Builder setMinDay(int day){
+            minDay=day;
+            return this;
+        }
+
+        public Builder setMaxDay(int day){
+            maxDay=day;
+            return this;
+        }
+
+        public Builder setSelectYear(int year){
+            this.selectYear=year;
+            return this;
+        }
+
+        public Builder setSelectMonth(int month){
+            this.selectMonth=month;
+            return this;
+        }
+
+        public Builder setSelectDay(int day){
+            this.selectDay=day;
+            return this;
+        }
+
+        /**
+         * 获取当前选择的日期
+         *
+         * @return int[]数组形式返回。例[1990,6,15]
+         */
+        private final int[] getCurrDateValues() {
+            int currYear = Integer.parseInt(params.loopYear.getCurrentItemValue());
+            int currMonth = Integer.parseInt(params.loopMonth.getCurrentItemValue());
+            int currDay = Integer.parseInt(params.loopDay.getCurrentItemValue());
+            return new int[]{currYear, currMonth, currDay};
+        }
+
+        public Builder setOnDateSelectedListener(OnDateSelectedListener onDateSelectedListener) {
+            params.callback = onDateSelectedListener;
+            return this;
+        }
+
+
+        public DatePickerDialog create() {
+            final DatePickerDialog dialog = new DatePickerDialog(context, params.shadow ? R.style.Theme_Light_NoTitle_Dialog : R.style.Theme_Light_NoTitle_NoShadow_Dialog);
+            View view = LayoutInflater.from(context).inflate(R.layout.layout_picker_date, null,false);
+
+            view.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    dialog.dismiss();
+                    params.callback.onCancel();
+                }
+            });
+
+
+
+            Calendar c = Calendar.getInstance();
+
+            final LoopView loopDay = (LoopView) view.findViewById(R.id.loop_day);
+            loopDay.setArrayList(d(1, 30));
+            if(selectDay!=null){
+                loopDay.setCurrentItem(selectDay);
+            }else{
+                loopDay.setCurrentItem(c.get(Calendar.DATE));
+            }
+            //loopDay.setNotLoop();
+
+            final LoopView loopYear = (LoopView) view.findViewById(R.id.loop_year);
+            loopYear.setArrayList(d(MIN_YEAR, MAX_YEAR - MIN_YEAR + 1));
+            if(selectYear!=null){
+                loopYear.setCurrentItem(selectYear-MIN_YEAR+1);
+            }else{
+                loopYear.setCurrentItem(MAX_YEAR);
+            }
+            loopYear.setNotLoop();
+
+            final LoopView loopMonth = (LoopView) view.findViewById(R.id.loop_month);
+            loopMonth.setArrayList(d(1, 12));
+            if(selectMonth!=null){
+                loopMonth.setCurrentItem(selectMonth);
+            }else{
+                loopMonth.setCurrentItem(c.get(Calendar.MONTH));
+            }
+            loopMonth.setNotLoop();
+
+
+
+            final LoopListener maxDaySyncListener = new LoopListener() {
+                @Override
+                public void onItemSelect(int item) {
+                    Calendar c = Calendar.getInstance();
+                    boolean needFixed=true;
+                    if(minYear!=null){
+                        if(Integer.parseInt(loopYear.getCurrentItemValue())==minYear ){
+                            if(minMonth!=null){
+                                if(Integer.parseInt(loopMonth.getCurrentItemValue())<minMonth){
+                                    loopMonth.setCurrentItem(minMonth - 1);
+                                }
+                            }
+                        }else if(Integer.parseInt(loopYear.getCurrentItemValue())<minYear){
+                            loopYear.setCurrentItem(minYear-MIN_YEAR);
+                        }
+                    }
+
+                    if(maxYear!=null){
+                        if(Integer.parseInt(loopYear.getCurrentItemValue())==maxYear ){
+                            if(maxMonth!=null){
+                                if(Integer.parseInt(loopMonth.getCurrentItemValue())>maxMonth){
+                                    loopMonth.setCurrentItem(maxMonth - 1);
+                                }
+                            }
+                        }else if(Integer.parseInt(loopYear.getCurrentItemValue())>maxYear){
+                            loopYear.setCurrentItem(maxYear-MIN_YEAR);
+                        }
+                    }
+
+                    c.set(Integer.parseInt(loopYear.getCurrentItemValue()), Integer.parseInt(loopMonth.getCurrentItemValue()) - 1, 1);
+                    c.roll(Calendar.DATE, false);
+
+                    if(needFixed){
+                        int maxDayOfMonth = c.get(Calendar.DATE);
+                        int fixedCurr = loopDay.getCurrentItem();
+                        loopDay.setArrayList(d(1, maxDayOfMonth));
+                        // 修正被选中的日期最大值
+                        if (fixedCurr > maxDayOfMonth) fixedCurr = maxDayOfMonth - 1;
+                        loopDay.setCurrentItem(fixedCurr);
+                    }
+                }
+            };
+
+            final LoopListener dayLoopListener=new LoopListener() {
+                @Override
+                public void onItemSelect(int item) {
+                    if(minYear!=null && minMonth!=null && minDay!=null
+                            && Integer.parseInt(loopYear.getCurrentItemValue())==minYear
+                            && Integer.parseInt(loopMonth.getCurrentItemValue())==minMonth
+                            && Integer.parseInt(loopDay.getCurrentItemValue())<minDay
+                            ){
+                        loopDay.setCurrentItem(minDay-1);
+                    }
+
+                    if(maxYear!=null && maxMonth!=null && maxDay!=null
+                            && Integer.parseInt(loopYear.getCurrentItemValue())==maxYear
+                            && Integer.parseInt(loopMonth.getCurrentItemValue())==maxMonth
+                            && Integer.parseInt(loopDay.getCurrentItemValue())>maxDay
+                            ){
+                        loopDay.setCurrentItem(maxDay-1);
+                    }
+                }
+            };
+            loopYear.setListener(maxDaySyncListener);
+            loopMonth.setListener(maxDaySyncListener);
+            loopDay.setListener(dayLoopListener);
+
+            view.findViewById(R.id.tx_finish).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    dialog.dismiss();
+                    params.callback.onDateSelected(getCurrDateValues());
+                }
+            });
+
+            Window win = dialog.getWindow();
+            win.getDecorView().setPadding(0, 0, 0, 0);
+            WindowManager.LayoutParams lp = win.getAttributes();
+            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            win.setAttributes(lp);
+            win.setGravity(Gravity.BOTTOM);
+            win.setWindowAnimations(R.style.Rising);
+
+            dialog.setContentView(view);
+            dialog.setCanceledOnTouchOutside(params.canCancel);
+            dialog.setCancelable(params.canCancel);
+
+            params.loopYear = loopYear;
+            params.loopMonth = loopMonth;
+            params.loopDay = loopDay;
+            dialog.setParams(params);
+
+            return dialog;
+        }
+
+        /**
+         * 将数字传化为集合,并且补充0
+         *
+         * @param startNum 数字起点
+         * @param count    数字个数
+         * @return
+         */
+        private static List<String> d(int startNum, int count) {
+            String[] values = new String[count];
+            for (int i = startNum; i < startNum + count; i++) {
+                String tempValue = (i < 10 ? "0" : "") + i;
+                values[i - startNum] = tempValue;
+            }
+            return Arrays.asList(values);
+        }
+
+    }
+}

+ 202 - 0
app/src/main/java/com/sheep/gamegroup/dateview/DateUtil.java

@@ -0,0 +1,202 @@
+package com.sheep.gamegroup.dateview;
+
+import android.util.Log;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by lmt on 16/7/6.
+ */
+public class DateUtil {
+
+    public static final String ymdhms = "yyyy-MM-dd HH:mm:ss";
+    public static final String ymd = "yyyy-MM-dd";
+
+    public static String monthNumToMonthName(String month) {
+        String m = month;
+        if ("1".equals(month)) {
+            m = "一月份";
+        } else if ("2".equals(month)) {
+            m = "二月份";
+        } else if ("3".equals(month)) {
+            m = "三月份";
+        } else if ("4".equals(month)) {
+            m = "四月份";
+        } else if ("5".equals(month)) {
+            m = "五月份";
+        } else if ("6".equals(month)) {
+            m = "六月份";
+        } else if ("7".equals(month)) {
+            m = "七月份";
+        } else if ("8".equals(month)) {
+            m = "八月份";
+        } else if ("9".equals(month)) {
+            m = "九月份";
+        } else if ("10".equals(month)) {
+            m = "十月份";
+        } else if ("11".equals(month)) {
+            m = "十一月份";
+        } else if ("12".equals(month)) {
+            m = "十二月份";
+        }
+        return m;
+    }
+
+    public static String getTomorrow() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DAY_OF_MONTH, 1);
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;
+        int day = calendar.get(Calendar.DAY_OF_MONTH);
+        return year + "-" + (month > 9 ? month : ("0" + month)) + "-" + day;
+    }
+
+    public static int getYear() {
+        Calendar calendar = Calendar.getInstance();
+        return calendar.get(Calendar.YEAR);
+    }
+
+    public static String getToday() {
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;
+        int day = calendar.get(Calendar.DAY_OF_MONTH);
+        return year + "-" + (month > 9 ? month : ("0" + month)) + "-" + day;
+    }
+
+    public static List<Integer> getDateForString(String date) {
+        String[] dates = date.split("-");
+        List<Integer> list = new ArrayList<>();
+        list.add(Integer.parseInt(dates[0]));
+        list.add(Integer.parseInt(dates[1]));
+        list.add(Integer.parseInt(dates[2]));
+        return list;
+    }
+
+    public static Calendar getCalendar(Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        return calendar;
+    }
+
+
+    public static String formatDate(String date, String format) {
+        String resultD = date;
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        try {
+            Date d = sdf.parse(date);
+            resultD = sdf.format(d);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return resultD;
+    }
+
+    public static String formatDate(long milliseconds, String format) {
+        String resultD = "";
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        try {
+            Date d = new Date(milliseconds);
+            resultD = sdf.format(d);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return resultD;
+    }
+
+    public static Date formatDateStr(String date, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        Date date1 = null;
+        try {
+            date1 = sdf.parse(date);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return date1;
+    }
+
+    /**
+     * 通过年份和月份 得到当月的日子
+     *
+     * @param year
+     * @param month
+     * @return
+     */
+    public static int getMonthDays(int year, int month) {
+        month++;
+        switch (month) {
+            case 1:
+            case 3:
+            case 5:
+            case 7:
+            case 8:
+            case 10:
+            case 12:
+                return 31;
+            case 4:
+            case 6:
+            case 9:
+            case 11:
+                return 30;
+            case 2:
+                if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
+                    return 29;
+                } else {
+                    return 28;
+                }
+            default:
+                return -1;
+        }
+    }
+
+    /**
+     * 返回当前月份1号位于周几
+     *
+     * @param year  年份
+     * @param month 月份,传入系统获取的,不需要正常的
+     * @return 日:1		一:2		二:3		三:4		四:5		五:6		六:7
+     */
+    public static int getFirstDayWeek(int year, int month) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(year, month, 1);
+        Log.d("DateView", "DateView:First:" + calendar.getFirstDayOfWeek());
+        return calendar.get(Calendar.DAY_OF_WEEK);
+    }
+
+    public static String getDayWeek(int year, int month, int day) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(year, month, day);
+        Log.d("DateView", "DateView:First:" + calendar.getFirstDayOfWeek());
+
+        switch (calendar.get(Calendar.DAY_OF_WEEK)) {
+            case 1:
+                return "周日";
+
+            case 2:
+                return "周一";
+
+            case 3:
+                return "周二";
+
+            case 4:
+                return "周三";
+
+            case 5:
+                return "周四";
+
+            case 6:
+                return "周五";
+
+            case 7:
+                return "周六";
+
+            default:
+                return "";
+
+        }
+    }
+}

+ 12 - 0
app/src/main/java/com/sheep/gamegroup/dateview/LoopListener.java

@@ -0,0 +1,12 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+
+public interface LoopListener
+{
+
+    void onItemSelect(int item);
+}

+ 25 - 0
app/src/main/java/com/sheep/gamegroup/dateview/LoopRunnable.java

@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+// Referenced classes of package com.qingchifan.view:
+//            LoopView, LoopListener
+
+final class LoopRunnable implements Runnable {
+
+    final LoopView loopView;
+
+    LoopRunnable(LoopView loopview) {
+        super();
+        loopView = loopview;
+
+    }
+
+    public final void run() {
+        LoopListener listener = loopView.loopListener;
+        int i = LoopView.getSelectItem(loopView);
+        listener.onItemSelect(i);
+    }
+}

+ 64 - 0
app/src/main/java/com/sheep/gamegroup/dateview/LoopTimerTask.java

@@ -0,0 +1,64 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+// Referenced classes of package com.qingchifan.view:
+//            LoopView
+
+final class LoopTimerTask extends TimerTask {
+
+    float a;
+    final float b;
+    final Timer timer;
+    final LoopView loopView;
+
+    LoopTimerTask(LoopView loopview, float f, Timer timer) {
+        super();
+        loopView = loopview;
+        b = f;
+        this.timer = timer;
+        a = 2.147484E+09F;
+    }
+
+    public final void run() {
+        if (a == 2.147484E+09F) {
+            if (Math.abs(b) > 2000F) {
+                if (b > 0.0F) {
+                    a = 2000F;
+                } else {
+                    a = -2000F;
+                }
+            } else {
+                a = b;
+            }
+        }
+        if (Math.abs(a) >= 0.0F && Math.abs(a) <= 20F) {
+            timer.cancel();
+            loopView.handler.sendEmptyMessage(2000);
+            return;
+        }
+        int i = (int) ((a * 10F) / 1000F);
+        LoopView loopview = loopView;
+        loopview.totalScrollY = loopview.totalScrollY - i;
+        if (!loopView.isLoop) {
+            if (loopView.totalScrollY <= (int) ((float) (-loopView.positon) * (loopView.l * (float) loopView.h))) {
+                a = 40F;
+                loopView.totalScrollY = (int) ((float) (-loopView.positon) * (loopView.l * (float) loopView.h));
+            } else if (loopView.totalScrollY >= (int) ((float) (loopView.arrayList.size() - 1 - loopView.positon) * (loopView.l * (float) loopView.h))) {
+                loopView.totalScrollY = (int) ((float) (loopView.arrayList.size() - 1 - loopView.positon) * (loopView.l * (float) loopView.h));
+                a = -40F;
+            }
+        }
+        if (a < 0.0F) {
+            a = a + 20F;
+        } else {
+            a = a - 20F;
+        }
+        loopView.handler.sendEmptyMessage(1000);
+    }
+}

+ 403 - 0
app/src/main/java/com/sheep/gamegroup/dateview/LoopView.java

@@ -0,0 +1,403 @@
+package com.sheep.gamegroup.dateview;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+import java.util.List;
+import java.util.Timer;
+
+public class LoopView extends View {
+
+    Timer mTimer;
+    int totalScrollY;
+    Handler handler;
+    LoopListener loopListener;
+    private GestureDetector gestureDetector;
+    private int mSelectItem;
+    private GestureDetector.SimpleOnGestureListener simpleOnGestureListener;
+    Context context;
+    Paint paintA;
+    Paint paintB;
+    Paint paintC;
+    List arrayList;
+    int textSize;
+    int g;
+    int h;
+    int colorGray;
+    int colorBlack;
+    int colorGrayLight;
+    float l;
+    boolean isLoop;
+    int n;
+    int o;
+    int mCurrentItem;
+    int positon;
+    int r;
+    int s;
+    int t;
+    int u;
+    int v;
+    int w;
+    float x;
+    float y;
+    float z;
+
+    public LoopView(Context context) {
+        super(context);
+        initLoopView(context);
+    }
+
+    public LoopView(Context context, AttributeSet attributeset) {
+        super(context, attributeset);
+        initLoopView(context);
+    }
+
+    public LoopView(Context context, AttributeSet attributeset, int i1) {
+        super(context, attributeset, i1);
+        initLoopView(context);
+    }
+
+    private void initLoopView(Context context) {
+        textSize = 0;
+        colorGray = 0xffa7a7a7; //0xffafafaf;
+        //colorBlack = 0xff572dc9;// 0xff313131;
+        colorBlack = 0xff333333;
+        colorGrayLight = 0xffdcdcdc; //0xffc5c5c5;
+        l = 2.0F;
+        isLoop = true;
+        positon = -1;
+        r = 9;
+        x = 0.0F;
+        y = 0.0F;
+        z = 0.0F;
+        totalScrollY = 0;
+        simpleOnGestureListener = new LoopViewGestureListener(this);
+        handler = new MessageHandler(this);
+        this.context = context;
+        setTextSize(16F);
+    }
+
+    static int getSelectItem(LoopView loopview) {
+        return loopview.getCurrentItem();
+    }
+
+    static void b(LoopView loopview) {
+        loopview.f();
+    }
+
+    private void d() {
+        if (arrayList == null) {
+            return;
+        }
+        paintA = new Paint();
+        paintA.setColor(colorGray);
+        paintA.setAntiAlias(true);
+        paintA.setTypeface(Typeface.MONOSPACE);
+        paintA.setTextSize(textSize);
+        paintB = new Paint();
+        paintB.setColor(colorBlack);
+        paintB.setAntiAlias(true);
+        paintB.setTextScaleX(1.05F);
+        paintB.setTypeface(Typeface.MONOSPACE);
+        paintB.setTextSize(textSize);
+        paintC = new Paint();
+        paintC.setColor(colorGrayLight);
+        paintC.setAntiAlias(true);
+        paintC.setTypeface(Typeface.MONOSPACE);
+        paintC.setTextSize(textSize);
+        if (android.os.Build.VERSION.SDK_INT >= 11) {
+            setLayerType(1, null);
+        }
+        gestureDetector = new GestureDetector(context, simpleOnGestureListener);
+        gestureDetector.setIsLongpressEnabled(false);
+        e();
+        t = (int) ((float) h * l * (float) (r - 1));
+        s = (int) ((double) (t * 2) / Math.PI);
+        u = (int) ((double) t / Math.PI);
+        v = g + textSize;
+        n = (int) (((float) s - l * (float) h) / 2.0F);
+        o = (int) (((float) s + l * (float) h) / 2.0F);
+        if (positon == -1) {
+            if (isLoop) {
+                positon = (arrayList.size() + 1) / 2;
+            } else {
+                positon = 0;
+            }
+        }
+        mCurrentItem = positon;
+    }
+
+    private void e() {
+        Rect rect = new Rect();
+        for (int i1 = 0; i1 < arrayList.size(); i1++) {
+            // String s1 = (String) arrayList.get(i1);
+            // wangpeng:调整可触摸区域的宽度为4个字符
+            paintB.getTextBounds("0000", 0, "0000".length(), rect);
+            int j1 = rect.width();
+            // wangpeng:调整区域增大2倍,提升体验。
+            j1 = (int) (j1 * 2.0f);
+            if (j1 > g) {
+                g = j1;
+            }
+            paintB.getTextBounds("\u661F\u671F", 0, 2, rect);
+            j1 = rect.height();
+            if (j1 > h) {
+                h = j1;
+            }
+        }
+
+    }
+
+    private void f() {
+        int i1 = (int) ((float) totalScrollY % (l * (float) h));
+        Timer timer = new Timer();
+        mTimer = timer;
+        timer.schedule(new MTimer(this, i1, timer), 0L, 10L);
+    }
+
+    public final void setNotLoop() {
+        isLoop = false;
+    }
+
+    /**
+     * 设置是否循环滚动
+     *
+     * @param cyclic
+     */
+    public final void setCyclic(boolean cyclic) {
+        isLoop = cyclic;
+    }
+
+    public final void setTextSize(float size) {
+        if (size > 0.0F) {
+            textSize = (int) (context.getResources().getDisplayMetrics().density * size);
+        }
+    }
+
+    public final void setCurrentItem(int position) {
+        this.positon = position;
+        totalScrollY = 0;
+        f();
+        invalidate();
+    }
+
+    public final void setListener(LoopListener LoopListener) {
+        loopListener = LoopListener;
+    }
+
+    public final void setArrayList(List arraylist) {
+        arrayList = arraylist;
+        d();
+        invalidate();
+    }
+
+    public final int getCurrentItem() {
+        if (mCurrentItem <= 0) {
+            return 0;
+        }
+        return mCurrentItem;
+    }
+
+    public final String getCurrentItemValue(){
+        return String.valueOf(arrayList.get(getCurrentItem())).trim();
+    }
+
+    protected final void b(float f1) {
+        Timer timer = new Timer();
+        mTimer = timer;
+        timer.schedule(new LoopTimerTask(this, f1, timer), 0L, 20L);
+    }
+
+    protected final void b(int i1) {
+        Timer timer = new Timer();
+        mTimer = timer;
+        timer.schedule(new MyTimerTask(this, i1, timer), 0L, 20L);
+    }
+
+    protected final void c() {
+        if (loopListener != null) {
+            (new Handler()).postDelayed(new LoopRunnable(this), 200L);
+        }
+    }
+
+    protected void onDraw(Canvas canvas) {
+        // wangpeng: 触摸分析辅助线
+        // canvas.drawLine( 0 ,getHeight() / 2, getWidth(), getHeight() / 2, paintA);
+        // canvas.drawLine( getWidth() / 2 ,0 , getWidth()/ 2, getHeight() , paintA);
+
+        String as[];
+        if (arrayList == null) {
+            super.onDraw(canvas);
+            return;
+        }
+        as = new String[r];
+        w = (int) ((float) totalScrollY / (l * (float) h));
+        mCurrentItem = positon + w % arrayList.size();
+        int i1;
+        if (!isLoop) {
+            if (mCurrentItem < 0) {
+                mCurrentItem = 0;
+            }
+            if (mCurrentItem > arrayList.size() - 1) {
+                mCurrentItem = arrayList.size() - 1;
+            }
+            // break;
+        } else {
+            if (mCurrentItem < 0) {
+                mCurrentItem = arrayList.size() + mCurrentItem;
+            }
+            if (mCurrentItem > arrayList.size() - 1) {
+                mCurrentItem = mCurrentItem - arrayList.size();
+            }
+            // continue;
+        }
+        do {
+            int j2 = (int) ((float) totalScrollY % (l * (float) h));
+            int k1 = 0;
+            while (k1 < r) {
+                int l1 = mCurrentItem - (4 - k1);
+                if (isLoop) {
+                    i1 = l1;
+                    if (l1 < 0) {
+                        i1 = l1 + arrayList.size();
+                    }
+                    l1 = i1;
+                    if (i1 > arrayList.size() - 1) {
+                        l1 = i1 - arrayList.size();
+                    }
+                    as[k1] = (String) arrayList.get(l1);
+                } else if (l1 < 0) {
+                    as[k1] = "";
+                } else if (l1 > arrayList.size() - 1) {
+                    as[k1] = "";
+                } else {
+                    as[k1] = (String) arrayList.get(l1);
+                }
+                k1++;
+            }
+            k1 = (v - g) / 2;
+             //canvas.drawLine(0.0F, n, v, n, paintC);
+             //canvas.drawLine(0.0F, o, v, o, paintC);
+            int j1 = 0;
+            while (j1 < r) {
+                canvas.save();
+                double d1 = ((double) ((float) (h * j1) * l - (float) j2) * 3.1415926535897931D) / (double) t;
+                float f1 = (float) (90D - (d1 / 3.1415926535897931D) * 180D);
+                if (f1 >= 90F || f1 <= -90F) {
+                    canvas.restore();
+                } else {
+                    int i2 = (int) ((double) u - Math.cos(d1) * (double) u - (Math.sin(d1) * (double) h) / 2D);
+                    canvas.translate(0.0F, i2);
+                    canvas.scale(1.0F, (float) Math.sin(d1));
+
+                    String str = as[j1];
+
+                    int zoomTextSize = textSize;
+                    double zoom = ((double) textSize - str.length() * 2) / textSize * 1.2;
+                    zoomTextSize = (int) (textSize * zoom);
+                    if (zoomTextSize < 10) {
+                        zoomTextSize = 10;
+                    }
+                    paintA.setTextSize(zoomTextSize);
+                    paintB.setTextSize(zoomTextSize);
+
+                    int startX = (int) (n + (getLeft() * 0.5));
+
+                    Rect rect = new Rect();
+                    paintB.getTextBounds(str, 0, str.length(), rect);
+
+                    int itemWidth = rect.width();
+                    int maxWidth = getWidth();
+
+                    maxWidth -= 2 * startX;
+
+                    if (itemWidth > 0) {
+                        startX += (maxWidth - itemWidth) * 0.5;
+                    }
+                    startX-=30;
+                    if (i2 <= n && h + i2 >= n) {
+                        canvas.save();
+                        canvas.clipRect(0, 0, v, n - i2);
+                        canvas.drawText(as[j1], startX, h, paintA);
+                        canvas.restore();
+                        canvas.save();
+                        canvas.clipRect(0, n - i2, v, (int) ((float) h * l));
+                        canvas.drawText(as[j1], startX, h, paintB);
+                        canvas.restore();
+                    } else if (i2 <= o && h + i2 >= o) {
+                        canvas.save();
+                        canvas.clipRect(0, 0, v, o - i2);
+                        canvas.drawText(as[j1], startX, h, paintB);
+                        canvas.restore();
+                        canvas.save();
+                        canvas.clipRect(0, o - i2, v, (int) ((float) h * l));
+                        canvas.drawText(as[j1], startX, h, paintA);
+                        canvas.restore();
+                    } else if (i2 >= n && h + i2 <= o) {
+                        canvas.clipRect(0, 0, v, (int) ((float) h * l));
+                        canvas.drawText(as[j1], startX, h, paintB);
+                        mSelectItem = arrayList.indexOf(as[j1]);
+                    } else {
+                        canvas.clipRect(0, 0, v, (int) ((float) h * l));
+                        canvas.drawText(as[j1], startX, h, paintA);
+                    }
+                    canvas.restore();
+                }
+                j1++;
+            }
+            super.onDraw(canvas);
+            return;
+        } while (true);
+    }
+
+    protected void onMeasure(int i1, int j1) {
+        d();
+        setMeasuredDimension(v, s);
+    }
+
+    public boolean onTouchEvent(MotionEvent motionevent) {
+        switch (motionevent.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                x = motionevent.getRawY();
+                break;
+            case MotionEvent.ACTION_MOVE:
+                y = motionevent.getRawY();
+                z = x - y;
+                x = y;
+                totalScrollY = (int) ((float) totalScrollY + z);
+                if (!isLoop) {
+                    if (totalScrollY > (int) ((float) (-positon) * (l * (float) h))) {
+                        break; /* Loop/switch isn't completed */
+                    }
+                    totalScrollY = (int) ((float) (-positon) * (l * (float) h));
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+            default:
+                if (!gestureDetector.onTouchEvent(motionevent) && motionevent.getAction() == 1) {
+                    f();
+                }
+                return true;
+        }
+
+        if (totalScrollY < (int) ((float) (arrayList.size() - 1 - positon) * (l * (float) h))) {
+            invalidate();
+        } else {
+            totalScrollY = (int) ((float) (arrayList.size() - 1 - positon) * (l * (float) h));
+            invalidate();
+        }
+
+        if (!gestureDetector.onTouchEvent(motionevent) && motionevent.getAction() == 1) {
+            f();
+        }
+        return true;
+    }
+}

+ 32 - 0
app/src/main/java/com/sheep/gamegroup/dateview/LoopViewGestureListener.java

@@ -0,0 +1,32 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+import android.view.MotionEvent;
+
+// Referenced classes of package com.qingchifan.view:
+//            LoopView
+
+final class LoopViewGestureListener extends android.view.GestureDetector.SimpleOnGestureListener {
+
+    final LoopView loopView;
+
+    LoopViewGestureListener(LoopView loopview) {
+        super();
+        loopView = loopview;
+    }
+
+    public final boolean onDown(MotionEvent motionevent) {
+        if (loopView.mTimer != null) {
+            loopView.mTimer.cancel();
+        }
+        return true;
+    }
+
+    public final boolean onFling(MotionEvent motionevent, MotionEvent motionevent1, float f, float f1) {
+        loopView.b(f1);
+        return true;
+    }
+}

+ 61 - 0
app/src/main/java/com/sheep/gamegroup/dateview/MTimer.java

@@ -0,0 +1,61 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+final class MTimer extends TimerTask {
+
+    int a;
+    int b;
+    final int c;
+    final Timer timer;
+    final LoopView loopView;
+
+    MTimer(LoopView loopview, int i, Timer timer) {
+        super();
+        loopView = loopview;
+        c = i;
+        this.timer = timer;
+        a = 0x7fffffff;
+        b = 0;
+    }
+
+    public final void run() {
+        if (a == 0x7fffffff) {
+            if (c < 0) {
+                if ((float) (-c) > (loopView.l * (float) loopView.h) / 2.0F) {
+                    a = (int) (-loopView.l * (float) loopView.h - (float) c);
+                } else {
+                    a = -c;
+                }
+            } else if ((float) c > (loopView.l * (float) loopView.h) / 2.0F) {
+                a = (int) (loopView.l * (float) loopView.h - (float) c);
+            } else {
+                a = -c;
+            }
+        }
+        b = (int) ((float) a * 0.1F);
+        if (b == 0) {
+            if (a < 0) {
+                b = -1;
+            } else {
+                b = 1;
+            }
+        }
+        if (Math.abs(a) <= 0) {
+            timer.cancel();
+            loopView.handler.sendEmptyMessage(3000);
+            return;
+        } else {
+            LoopView loopview = loopView;
+            loopview.totalScrollY = loopview.totalScrollY + b;
+            loopView.handler.sendEmptyMessage(1000);
+            a = a - b;
+            return;
+        }
+    }
+}

+ 35 - 0
app/src/main/java/com/sheep/gamegroup/dateview/MessageHandler.java

@@ -0,0 +1,35 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+import android.os.Handler;
+import android.os.Message;
+
+// Referenced classes of package com.qingchifan.view:
+//            LoopView
+
+final class MessageHandler extends Handler {
+
+    final LoopView a;
+
+    MessageHandler(LoopView loopview) {
+        super();
+        a = loopview;
+    }
+
+    public final void handleMessage(Message paramMessage) {
+        if (paramMessage.what == 1000)
+            this.a.invalidate();
+        while (true) {
+            if (paramMessage.what == 2000)
+                LoopView.b(a);
+            else if (paramMessage.what == 3000)
+                this.a.c();
+            super.handleMessage(paramMessage);
+            return;
+        }
+    }
+
+}

+ 56 - 0
app/src/main/java/com/sheep/gamegroup/dateview/MyTimerTask.java

@@ -0,0 +1,56 @@
+// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.geocities.com/kpdus/jad.html
+// Decompiler options: braces fieldsfirst space lnc 
+
+package com.sheep.gamegroup.dateview;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+// Referenced classes of package com.qingchifan.view:
+//            LoopView
+
+final class MyTimerTask extends TimerTask {
+
+    float a;
+    float b;
+    final int c;
+    final Timer timer;
+    final LoopView loopView;
+
+    MyTimerTask(LoopView loopview, int i, Timer timer) {
+        super();
+        this.loopView = loopview;
+        c = i;
+        this.timer = timer;
+
+        a = 2.147484E+09F;
+        b = 0.0F;
+    }
+
+    public final void run() {
+        if (a == 2.147484E+09F) {
+            a = (float) (c - LoopView.getSelectItem(loopView)) * loopView.l * (float) loopView.h;
+            if (c > LoopView.getSelectItem(loopView)) {
+                b = -1000F;
+            } else {
+                b = 1000F;
+            }
+        }
+        if (Math.abs(a) < 1.0F) {
+            timer.cancel();
+            loopView.handler.sendEmptyMessage(2000);
+            return;
+        }
+        int j = (int) ((b * 10F) / 1000F);
+        int i = j;
+        if (Math.abs(a) < (float) Math.abs(j)) {
+            i = (int) (-a);
+        }
+        LoopView loopview = loopView;
+        loopview.totalScrollY = loopview.totalScrollY - i;
+        float f = a;
+        a = (float) i + f;
+        loopView.handler.sendEmptyMessage(1000);
+    }
+}

+ 128 - 0
app/src/main/java/com/sheep/gamegroup/dateview/TimePickerDialog.java

@@ -0,0 +1,128 @@
+package com.sheep.gamegroup.dateview;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class TimePickerDialog extends Dialog {
+
+    public interface OnTimeSelectedListener {
+        void onTimeSelected(int[] times);
+    }
+
+
+    private Params params;
+
+    public TimePickerDialog(Context context, int themeResId) {
+        super(context, themeResId);
+    }
+
+    private void setParams(TimePickerDialog.Params params) {
+        this.params = params;
+    }
+
+
+    private static final class Params {
+        private boolean shadow = true;
+        private boolean canCancel = true;
+        private LoopView loopHour, loopMin;
+        private OnTimeSelectedListener callback;
+    }
+
+    public static class Builder {
+        private final Context context;
+        private final TimePickerDialog.Params params;
+
+        public Builder(Context context) {
+            this.context = context;
+            params = new TimePickerDialog.Params();
+        }
+
+        /**
+         * 获取当前选择的时间
+         *
+         * @return int[]数组形式返回。例[12,30]
+         */
+        private final int[] getCurrDateValues() {
+            int currHour = Integer.parseInt(params.loopHour.getCurrentItemValue());
+            int currMin = Integer.parseInt(params.loopMin.getCurrentItemValue());
+            return new int[]{currHour, currMin};
+        }
+
+        public TimePickerDialog create() {
+            final TimePickerDialog dialog = new TimePickerDialog(context, params.shadow ? R.style.Theme_Light_NoTitle_Dialog : R.style.Theme_Light_NoTitle_NoShadow_Dialog);
+            View view = LayoutInflater.from(context).inflate(R.layout.layout_picker_time, null);
+
+            final LoopView loopHour = (LoopView) view.findViewById(R.id.loop_hour);
+
+            //修改优化边界值 by lmt 16/ 9 /12.禁用循环滑动,循环滑动有bug
+            loopHour.setCyclic(false);
+            loopHour.setArrayList(d(0, 24));
+            loopHour.setCurrentItem(12);
+
+            final LoopView loopMin = (LoopView) view.findViewById(R.id.loop_min);
+            loopMin.setCyclic(false);
+            loopMin.setArrayList(d(0, 60));
+            loopMin.setCurrentItem(30);
+
+            view.findViewById(R.id.tx_finish).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    dialog.dismiss();
+                    params.callback.onTimeSelected(getCurrDateValues());
+                }
+            });
+
+            Window win = dialog.getWindow();
+            win.getDecorView().setPadding(0, 0, 0, 0);
+            WindowManager.LayoutParams lp = win.getAttributes();
+            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+            win.setAttributes(lp);
+            win.setGravity(Gravity.BOTTOM);
+            win.setWindowAnimations(R.style.Rising);
+
+            dialog.setContentView(view);
+            dialog.setCanceledOnTouchOutside(params.canCancel);
+            dialog.setCancelable(params.canCancel);
+
+            params.loopHour = loopHour;
+            params.loopMin = loopMin;
+            dialog.setParams(params);
+
+            return dialog;
+        }
+
+
+        public Builder setOnTimeSelectedListener(OnTimeSelectedListener onTimeSelectedListener) {
+            params.callback = onTimeSelectedListener;
+            return this;
+        }
+
+
+        /**
+         * 将数字传化为集合,并且补充0
+         *
+         * @param startNum 数字起点
+         * @param count    数字个数
+         * @return
+         */
+        private static List<String> d(int startNum, int count) {
+            String[] values = new String[count];
+            for (int i = startNum; i < startNum + count; i++) {
+                String tempValue = (i < 10 ? "0" : "") + i;
+                values[i - startNum] = tempValue;
+            }
+            return Arrays.asList(values);
+        }
+    }
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 634 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/RobTask.java


+ 16 - 0
app/src/main/res/anim/slide_in_bottom.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:interpolator="@android:interpolator/accelerate_decelerate"
+   >
+
+    <translate
+        android:duration="@android:integer/config_mediumAnimTime"
+        android:fromYDelta="100%p"
+        android:toYDelta="0" />
+
+    <alpha
+        android:duration="@android:integer/config_mediumAnimTime"
+        android:fromAlpha="0.95"
+        android:toAlpha="1" />
+
+</set>

+ 14 - 0
app/src/main/res/anim/slide_out_bottom.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <translate
+        android:duration="@android:integer/config_mediumAnimTime"
+        android:fromYDelta="0"
+        android:toYDelta="100%p" />
+
+    <alpha
+        android:duration="@android:integer/config_mediumAnimTime"
+        android:fromAlpha="1"
+        android:toAlpha="0.95" />
+
+</set>

BIN
app/src/main/res/drawable-xhdpi/invition_redpackage.png


+ 12 - 0
app/src/main/res/drawable/border_circle_radius.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <!-- 内部颜色 -->
+    <solid android:color="#ffffff" />
+     <corners android:radius="6dp" />
+    <!-- 边缘线条颜色 -->
+    <stroke
+        android:width="1dp"
+        android:color="#EDEDED" />
+
+</shape>

+ 6 - 0
app/src/main/res/drawable/dialog_white_radius.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="18dp" />
+    <solid android:color="@color/white" />
+</shape>

+ 15 - 0
app/src/main/res/drawable/dotted_line.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fromDegrees="90"
+    android:toDegrees="180" >
+<shape
+    android:shape="line">
+    <!-- 显示一条虚线,破折线的宽度为dashWith,破折线之间的空隙的宽度为dashGap,当dashGap=0dp时,为实线 -->
+    <stroke
+        android:width="2dp"
+        android:dashGap="1dp"
+        android:dashWidth="5dp"
+        android:color="#262626" />
+    <size android:height="200dp"></size>
+</shape>
+</rotate>

+ 15 - 0
app/src/main/res/drawable/shape_get_redpackage.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <size
+        android:width="250dp"
+        android:height="150dp" />
+    <gradient
+        android:angle="90"
+        android:centerColor="#F9705D"
+        android:endColor="#FA855F"
+        android:startColor="#F52A55"
+        android:type="linear" />
+
+</shape>

+ 9 - 0
app/src/main/res/drawable/shape_get_redpackage_text_white.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <solid android:color="@color/white" />
+    <size
+        android:width="197dp"
+        android:height="34dp" />
+</shape>

+ 13 - 0
app/src/main/res/drawable/shape_get_redpackage_text_yellow.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="15dp" />
+    <size
+        android:width="110dp"
+        android:height="29dp" />
+    <gradient
+        android:angle="45"
+        android:endColor="#FCD586"
+        android:startColor="#FDB811"
+        android:type="linear" />
+</shape>

+ 31 - 0
app/src/main/res/drawable/wheel_bg.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <item>
+        <shape android:shape="rectangle" >
+            <gradient
+                android:angle="0"
+                android:centerColor="#fff"
+                android:endColor="#fff"
+                android:startColor="#fff" />
+
+            <stroke
+                android:width="1dp"
+                android:color="#00000000" />
+        </shape>
+    </item>
+    <item
+        android:bottom="1dp"
+        android:left="4dp"
+        android:right="4dp"
+        android:top="1dp">
+        <shape android:shape="rectangle" >
+            <gradient
+                android:angle="0"
+                android:centerColor="#FFF"
+                android:endColor="#fff"
+                android:startColor="#fff" />
+        </shape>
+    </item>
+
+</layer-list>

+ 12 - 0
app/src/main/res/drawable/wheel_val.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+	<gradient
+		android:startColor="#3f00fcfe"
+		android:centerColor="#2f00fcfe"
+		android:endColor="#3f00fcfe"
+		android:angle="0" />
+
+	<stroke android:width="1dp" android:color="#00000000" /> 
+</shape>

+ 107 - 0
app/src/main/res/layout/activity_edit_persional_info.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include
+        android:id="@+id/layout_title"
+        layout="@layout/title" />
+
+    <TextView
+        android:id="@+id/tv_choise_sex"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/layout_title"
+        android:layout_marginStart="20dp"
+        android:layout_marginTop="20dp"
+        android:text="选择性别" />
+
+    <LinearLayout
+        android:id="@+id/llyaout_male_female"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/tv_choise_sex"
+        android:layout_marginTop="10dp"
+        android:orientation="horizontal"
+        android:paddingBottom="5dp"
+        android:paddingTop="5dp">
+
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1">
+
+            <ImageView
+                android:id="@+id/iv_male"
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                android:layout_alignParentEnd="true"
+                android:layout_marginEnd="30dp"
+                android:src="@mipmap/understand_sheep_b" />
+
+            <TextView
+                android:id="@+id/tv_male"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentEnd="true"
+                android:layout_below="@id/iv_male"
+                android:layout_marginEnd="40dp"
+                android:layout_marginTop="10dp"
+                android:text="@string/male" />
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1">
+
+            <ImageView
+                android:id="@+id/iv_female"
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                android:layout_alignParentStart="true"
+                android:layout_marginStart="30dp"
+                android:src="@mipmap/understand_sheep_b" />
+
+            <TextView
+                android:id="@+id/tv_female"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentStart="true"
+                android:layout_below="@id/iv_female"
+                android:layout_marginStart="45dp"
+                android:layout_marginTop="10dp"
+                android:text="@string/female" />
+        </RelativeLayout>
+    </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/rlayout_choice_birthday"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:layout_below="@id/llyaout_male_female"
+        android:layout_marginTop="40dp">
+
+        <TextView
+            android:id="@+id/tv_birth_day"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginStart="50dp"
+            android:text="@string/birth_day" />
+
+        <TextView
+            android:id="@+id/tv_choice_birthday"
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="30dp"
+            android:layout_marginRight="20dp"
+            android:layout_toRightOf="@id/tv_birth_day"
+            android:gravity="center_vertical"
+            android:hint="@string/choice_birthday"
+            android:paddingBottom="3dp"
+            android:paddingTop="3dp" />
+
+    </RelativeLayout>
+</RelativeLayout>

+ 56 - 0
app/src/main/res/layout/dialog_change_red_package.xml

@@ -0,0 +1,56 @@
+<?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="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:background="@drawable/dialog_white_radius"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_gravity="center_horizontal"
+            android:gravity="center"
+            android:text="@string/red_package_change"
+            android:textColor="@color/black"
+            android:textSize="20sp"
+            android:textStyle="bold" />
+
+        <EditText
+            android:id="@+id/ed_change_code"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:background="@null"
+            android:hint="@string/red_change_code"
+            android:padding="3dp" />
+
+        <TextView
+            android:id="@+id/tv_change_redpackage_now"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginBottom="20dp"
+            android:layout_marginTop="10dp"
+            android:background="@color/main_blue_light"
+            android:paddingBottom="8dp"
+            android:paddingEnd="40dp"
+            android:paddingStart="40dp"
+            android:paddingTop="8dp"
+            android:text="@string/change_red_now" />
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/dialog_close"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="@dimen/content_padding_30"
+        android:src="@mipmap/close" />
+
+</LinearLayout>

+ 57 - 0
app/src/main/res/layout/dialog_redpackage_after_invitation.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="300dp"
+    android:layout_height="290dp"
+    android:layout_marginLeft="40dp"
+    android:layout_marginRight="40dp"
+    android:background="@mipmap/get_redpackage_success">
+
+    <TextView
+        android:id="@+id/tv_flag1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="50dp"
+        android:text="@string/congratunation"
+        android:textColor="#ffffe0d7"
+        android:textSize="24sp" />
+
+    <LinearLayout
+        android:id="@+id/l_flag2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/tv_flag1"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="20dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tv_money"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="0.01"
+            android:textColor="#ffffe0d7"
+            android:textSize="38sp" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="元"
+            android:textColor="#ffffe0d7"
+            android:textSize="20sp" />
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tv_get_redpackage"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="40dp"
+        android:background="@drawable/shape_get_redpackage_text_yellow"
+        android:gravity="center"
+        android:text="收下红包"
+        android:textColor="#ff3e2e08"
+        android:textSize="12sp" />
+
+</RelativeLayout>

+ 88 - 0
app/src/main/res/layout/layout_picker_data.xml

@@ -0,0 +1,88 @@
+<?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="wrap_content"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:background="#F8F8F8">
+
+        <TextView
+            android:id="@+id/tx_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:layout_marginLeft="22dip"
+            android:textColor="#5677ee"
+            android:textSize="15sp" />
+
+        <TextView
+            android:id="@+id/tx_finish"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:paddingBottom="10dip"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:paddingTop="10dip"
+            android:text="@string/timepicker_finish"
+            android:textColor="#5677ee"
+            android:textSize="15sp" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#FFFFFF"
+            android:orientation="horizontal"
+            android:paddingBottom="5dip"
+            android:paddingTop="5dip">
+
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <com.example.liangmutian.mypicker.LoopView
+                    android:id="@+id/loop_data"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:id="@+id/tx_unit"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:textColor="#B3B3B3" />
+            </FrameLayout>
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginBottom="15dip"
+            android:background="#A5A5A5" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginTop="15dip"
+            android:background="#A5A5A5" />
+
+    </FrameLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#E2E2E2" />
+
+</LinearLayout>

+ 138 - 0
app/src/main/res/layout/layout_picker_date.xml

@@ -0,0 +1,138 @@
+<?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="wrap_content"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:background="#F8F8F8">
+
+        <TextView
+            android:id="@+id/tv_cancel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:layout_marginLeft="22dip"
+            android:text="取消"
+            android:textColor="#5677ee"
+            android:textSize="15sp"
+            android:visibility="invisible" />
+
+        <TextView
+            android:id="@+id/tx_finish"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:paddingBottom="10dip"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:paddingTop="10dip"
+            android:text="@string/timepicker_finish"
+            android:textColor="#ff0b71e0"
+            android:textSize="15sp" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:background="#A5A5A5" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#FFFFFF"
+            android:orientation="horizontal"
+            android:paddingBottom="5dip"
+            android:paddingTop="5dip">
+
+            <FrameLayout
+                android:layout_width="110dip"
+                android:layout_height="wrap_content">
+
+                <com.sheep.gamegroup.dateview.LoopView
+                    android:id="@+id/loop_year"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:text="@string/timepicker_year"
+                    android:textColor="@color/black_444444" />
+            </FrameLayout>
+
+            <FrameLayout
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1">
+
+                <com.sheep.gamegroup.dateview.LoopView
+                    android:id="@+id/loop_month"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:text="@string/timepicker_month"
+                    android:textColor="@color/black_444444" />
+            </FrameLayout>
+
+            <FrameLayout
+                android:layout_width="110dip"
+                android:layout_height="wrap_content">
+
+                <com.sheep.gamegroup.dateview.LoopView
+                    android:id="@+id/loop_day"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical|right"
+                    android:layout_marginRight="15dip"
+                    android:text="@string/timepicker_day"
+                    android:textColor="@color/black_444444" />
+            </FrameLayout>
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_gravity="center_vertical"
+            android:layout_marginBottom="15dp"
+            android:layout_marginLeft="14dp"
+            android:layout_marginRight="14dp"
+            android:background="#F5F5F5" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_gravity="center_vertical"
+            android:layout_marginLeft="14dp"
+            android:layout_marginRight="14dp"
+            android:layout_marginTop="15dp"
+            android:background="#F5F5F5" />
+    </FrameLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#E2E2E2" />
+
+</LinearLayout>

+ 116 - 0
app/src/main/res/layout/layout_picker_region.xml

@@ -0,0 +1,116 @@
+<?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="wrap_content"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:background="#F8F8F8">
+
+        <TextView
+            android:id="@+id/tx_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:layout_marginLeft="22dip"
+            android:text="@string/timepicker_title_default"
+            android:textColor="#333333"
+            android:textSize="13sp" />
+
+        <TextView
+            android:id="@+id/tx_finish"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:paddingBottom="10dip"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:paddingTop="10dip"
+            android:text="@string/timepicker_finish"
+            android:textColor="#8A7ED8"
+            android:textSize="15sp" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#FFFFFF"
+            android:orientation="horizontal"
+            android:paddingBottom="5dip"
+            android:paddingTop="5dip">
+
+            <View
+                android:layout_width="0dip"
+                android:layout_height="0dip"
+                android:layout_weight="1" />
+
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <com.example.android.dialog.picker.LoopView
+                    android:id="@+id/loop_city"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:textColor="#B3B3B3" />
+            </FrameLayout>
+
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <com.example.liangmutian.mypicker.LoopView
+                    android:id="@+id/loop_area"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:textColor="#B3B3B3" />
+            </FrameLayout>
+
+            <View
+                android:layout_width="0dip"
+                android:layout_height="0dip"
+                android:layout_weight="1" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginBottom="15dip"
+            android:background="#A5A5A5" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginTop="15dip"
+            android:background="#A5A5A5" />
+
+    </FrameLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#E2E2E2" />
+
+</LinearLayout>

+ 117 - 0
app/src/main/res/layout/layout_picker_time.xml

@@ -0,0 +1,117 @@
+<?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="wrap_content"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:background="#F8F8F8">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:layout_marginLeft="22dip"
+            android:text="取消"
+            android:textColor="#5677ee"
+            android:textSize="15sp" />
+
+        <TextView
+            android:id="@+id/tx_finish"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:paddingBottom="10dip"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:paddingTop="10dip"
+            android:text="@string/timepicker_finish"
+            android:textColor="#5677ee"
+            android:textSize="15sp" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#FFFFFF"
+            android:orientation="horizontal"
+            android:paddingBottom="5dip"
+            android:paddingTop="5dip">
+
+            <View
+                android:layout_width="0dip"
+                android:layout_height="0dip"
+                android:layout_weight="1" />
+
+            <FrameLayout
+                android:layout_width="110dip"
+                android:layout_height="wrap_content">
+
+                <com.example.liangmutian.mypicker.LoopView
+                    android:id="@+id/loop_hour"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="40dip"
+                    android:text="@string/timepicker_hour"
+                    android:textColor="#B3B3B3" />
+            </FrameLayout>
+
+            <FrameLayout
+                android:layout_width="110dip"
+                android:layout_height="wrap_content">
+
+                <com.example.liangmutian.mypicker.LoopView
+                    android:id="@+id/loop_min"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical|right"
+                    android:layout_marginRight="15dip"
+                    android:text="@string/timepicker_min"
+                    android:textColor="#B3B3B3" />
+            </FrameLayout>
+
+            <View
+                android:layout_width="0dip"
+                android:layout_height="0dip"
+                android:layout_weight="1" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginBottom="15dip"
+            android:background="#A5A5A5" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_gravity="center_vertical"
+            android:layout_marginTop="15dip"
+            android:background="#A5A5A5" />
+
+    </FrameLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#E2E2E2" />
+
+</LinearLayout>

+ 42 - 0
app/src/main/res/layout/pop_choice_sex.xml

@@ -0,0 +1,42 @@
+<?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="wrap_content"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+
+    <CheckBox
+        android:id="@+id/btn_male"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:gravity="center"
+        android:text="@string/male"
+        android:textColor="#ff444444"
+        android:textSize="14sp"
+        android:button="@null"/>
+
+    <View style="@style/style_item_line_full" />
+
+    <CheckBox
+        android:id="@+id/btn_female"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:gravity="center"
+        android:text="@string/female"
+        android:textColor="#ff444444"
+        android:textSize="14sp"
+        android:button="@null"/>
+
+    <View style="@style/style_item_line_full" />
+
+    <TextView
+        android:id="@+id/tv_cancel"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:gravity="center"
+        android:text="@string/chice_sex_completed"
+        android:textColor="#ff0b71e0"
+        android:textSize="14sp"
+        android:background="#F8F8F8"/>
+</LinearLayout>

+ 41 - 0
app/src/main/res/layout/pop_get_redpackage.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="200dp"
+    android:layout_height="150dp"
+    android:background="@drawable/shape_get_redpackage"
+    android:orientation="vertical">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="20dp"
+        android:text="邀请码领取,金额更大"
+        android:textColor="#ffffffff"
+        android:textSize="15sp" />
+
+    <EditText
+        android:id="@+id/ed_invitation_code"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="20dp"
+        android:background="@drawable/shape_get_redpackage_text_white"
+        android:gravity="center"
+        android:hint="@string/input_invitation_code"
+        android:textColor="@color/black"
+        android:textSize="15sp" />
+
+    <TextView
+        android:id="@+id/tv_get_redpackage"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="15dp"
+        android:background="@drawable/shape_get_redpackage_text_yellow"
+        android:gravity="center"
+        android:text="领取红包"
+        android:textColor="#ff3e2e08"
+        android:textSize="12sp" />
+
+</LinearLayout>

+ 112 - 0
app/src/main/res/layout/pop_robduty.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <RelativeLayout
+        android:id="@+id/lay_action"
+        android:layout_width="344dp"
+        android:layout_height="457dp"
+        android:background="@mipmap/qiangrew_bg">
+
+        <ImageView
+            android:id="@+id/iv_duty"
+            android:layout_width="@dimen/content_padding_65"
+            android:layout_height="@dimen/content_padding_65"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="120dp"
+            android:src="@mipmap/understand_sheep_b" />
+
+        <TextView
+            android:id="@+id/tv_duty_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/iv_duty"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="10dp"
+            android:text="XXX任务已上线"
+            android:textColor="#ffffffff"
+            android:textSize="16sp"/>
+
+        <LinearLayout
+            android:id="@+id/llay_money"
+            android:layout_width="match_parent"
+            android:layout_height="45dp"
+            android:layout_below="@id/tv_duty_title">
+
+            <RelativeLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1">
+
+                <TextView
+                    android:id="@+id/tv_robduty_money"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentEnd="true"
+                    android:layout_marginEnd="5dp"
+                    android:text="+1元"
+                    android:textStyle="bold"
+                 android:layout_centerVertical="true"
+                    android:textColor="#ffff2d4b"
+                    android:textSize="18sp"
+                    android:layout_marginTop="20dp"/>
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1">
+
+                <ImageView
+                    android:id="@+id/iv_monty_type"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentStart="true"
+                    android:layout_marginStart="5dp"
+                    android:layout_centerVertical="true"
+                    android:src="@mipmap/xinjin_label" />
+            </RelativeLayout>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/llay_money"
+            android:layout_marginBottom="20dp"
+            android:layout_marginTop="30dp">
+
+            <RelativeLayout
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:layout_weight="1">
+
+                <ImageView
+                    android:id="@+id/iv_change_one"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentEnd="true"
+                    android:layout_marginEnd="15dp"
+                    android:src="@mipmap/huanyige" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:layout_weight="1">
+
+                <ImageView
+                    android:id="@+id/iv_do_now"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentStart="true"
+                    android:layout_marginStart="15dp"
+                    android:src="@mipmap/lijiq" />
+            </RelativeLayout>
+        </LinearLayout>
+    </RelativeLayout>
+
+
+</RelativeLayout>

+ 106 - 0
app/src/main/res/layout/show_popup_window.xml

@@ -0,0 +1,106 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/rel_select"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_centerInParent="true"
+    android:layout_margin="10dp"
+    android:background="@drawable/border_circle_radius"
+    android:orientation="vertical" >
+<TextView
+    android:background="#2f19dfbb"
+    android:padding="10dp"
+    android:id="@+id/tv_pop_title"
+    android:textSize="18sp"
+    android:gravity="center"
+    android:textColor="#301616"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" />
+    <LinearLayout
+        android:id="@+id/timePicker1"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal" >
+        <com.sheep.dateview.WheelView
+            android:id="@+id/year"
+            android:layout_width="wrap_content"
+            android:layout_weight="1"
+            android:layout_height="wrap_content" />
+        <com.sheep.dateview.DashedLineView
+            android:layout_width="1dp"
+            android:gravity="center_vertical"
+            android:layout_gravity="center"
+            android:background="@drawable/dotted_line"
+            android:layout_height="match_parent" />
+        <com.sheep.dateview.WheelView
+            android:id="@+id/month"
+            android:layout_width="wrap_content"
+            android:layout_weight="1"
+            android:layout_height="wrap_content" />
+        <com.sheep.dateview.DashedLineView
+            android:layout_width="1dp"
+            android:gravity="center_vertical"
+            android:layout_gravity="center"
+            android:background="@drawable/dotted_line"
+            android:layout_height="match_parent" />
+        <com.sheep.dateview.WheelView
+            android:id="@+id/day"
+            android:layout_width="wrap_content"
+            android:layout_weight="1"
+            android:layout_height="wrap_content" />
+        <com.sheep.dateview.DashedLineView
+            android:layout_width="1dp"
+            android:background="@drawable/dotted_line"
+            android:layout_height="match_parent"
+            android:visibility="gone"/>
+        <com.sheep.dateview.WheelView
+            android:id="@+id/hour"
+            android:layout_width="wrap_content"
+            android:layout_weight="1"
+            android:visibility="gone"
+            android:layout_height="wrap_content" />
+        <com.sheep.dateview.DashedLineView
+            android:layout_width="1dp"
+            android:background="@drawable/dotted_line"
+            android:layout_height="match_parent"
+            android:visibility="gone"/>
+        <com.sheep.dateview.WheelView
+            android:id="@+id/mins"
+            android:visibility="gone"
+            android:layout_width="wrap_content"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            />
+    </LinearLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#2f19dfbb"
+        android:padding="10dp"
+        android:orientation="horizontal" >
+
+        <TextView
+            android:id="@+id/tv_cancle"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:padding="5dp"
+            android:textSize="18sp"
+            android:textColor="#ff0000"
+            android:layout_weight="1"
+            android:text="取消" />
+
+
+        <TextView
+            android:id="@+id/tv_ensure"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:textColor="#414341"
+            android:padding="5dp"
+            android:layout_weight="1"
+            android:textSize="18sp"
+            android:text="确定" />
+    </LinearLayout>
+
+
+</LinearLayout>

BIN
app/src/main/res/mipmap-xhdpi/get_redpackage_success.png


BIN
app/src/main/res/mipmap-xhdpi/huanyige.png


BIN
app/src/main/res/mipmap-xhdpi/invition_redpackage.png


BIN
app/src/main/res/mipmap-xhdpi/lijiq.png


BIN
app/src/main/res/mipmap-xhdpi/order_manager.png


BIN
app/src/main/res/mipmap-xhdpi/qiangrew_bg.png


BIN
app/src/main/res/mipmap-xhdpi/red_package_floatbtn.png


BIN
app/src/main/res/mipmap-xhdpi/xinjin_label.png