久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Android 自定義日期段選擇控件功能(開始時間-結(jié)束時間)

瀏覽:5日期:2022-09-24 17:02:18

開發(fā)中碰到個需求,需要在一個空間中選擇完成開始和結(jié)束時間。實現(xiàn)的過程走的是程序員開發(fā)的老路子,找到輪子后自己改吧改吧就成了。

當(dāng)時做的時候有幾個需求:1.當(dāng)天為最大的結(jié)束日期,2.最大選擇范圍1年,3.開始時間和結(jié)束時間可以為同一天。如有其他需求實現(xiàn),可以參考代碼改進(jìn)一下。先上效果圖:

Android 自定義日期段選擇控件功能(開始時間-結(jié)束時間)

視頻點擊后的虛影是屏幕錄制的原因。實現(xiàn)步驟:(如有缺失什么資源,請告知。開始時間和結(jié)束時間顯示自己布局內(nèi)添加就可以)

1.自定義控件屬性

<declare-styleable name='MyCalendar'> <attr name='dateformat' format='string'></attr> <attr name='titleSize' format='dimension'></attr> <attr name='titleColor' format='color'></attr> <attr name='goIcon' format='reference'></attr> <attr name='preIcon' format='reference'></attr> <attr name='dayInMonthColor' format='color'></attr> <attr name='dayOutMonthcolor' format='color'></attr> <attr name='todayColor' format='color'></attr> <attr name='todayEmptycircleColor' format='color'></attr> <attr name='todayFillcircleColor' format='color'></attr> <attr name='calendarbackground' format='color|reference'></attr></declare-styleable>

2.自定義控件代碼

/** * @Description: 可以選擇時間范圍的日歷控件 * @Author MengXY * @Emil mxy_2012_1@163.com * @Date 2019/1/8*/public class CalendarView extends LinearLayout implements View.OnClickListener{ private TextView title; private RecyclerView recyclerView; private RelativeLayout layout_calendar_gonext; private RelativeLayout layout_calendar_goup; private LinearLayoutManager linearLayoutManager; private Calendar curDate = Calendar.getInstance(); //從服務(wù)器獲取的日期 private Date dateFromServer; //外層主recyclerview的adapter private MainRvAdapter mainAdapter; private List<CalendarCell> months = new ArrayList<>(); private Context context; //相關(guān)屬性 private int titleColor; private int titleSize; private int enableSelectColor; private int disableSeletColor; private int todayColor; private int todayEmptyColor; private int todayFillColor; /** 初始日期為當(dāng)前日期前一年*/ private String time; private long timeBefor; private long timeNow; private List<String> titles = new ArrayList<>(); //點擊的開始時間與結(jié)束時間 private Date sDateTime; private Date eDateTime; private boolean isSelectingSTime = true; private HashMap<Integer, SubRvAdapter> allAdapters = new HashMap<>(); public CalendarView(Context context) { this(context, null); } public CalendarView(Context context, AttributeSet attrs) { this(context, attrs, 0); } private int maxSelect = 13; public CalendarView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCalendar); titleColor = ta.getColor(R.styleable.MyCalendar_titleColor, Color.WHITE); titleSize = (int) ta.getDimension(R.styleable.MyCalendar_titleSize, 15); enableSelectColor = ta.getColor(R.styleable.MyCalendar_dayInMonthColor, context.getResources().getColor(R.color.text_lable)); disableSeletColor = ta.getColor(R.styleable.MyCalendar_dayOutMonthcolor, context.getResources().getColor(R.color.text_unenable)); todayColor = ta.getColor(R.styleable.MyCalendar_todayColor, Color.BLUE); todayEmptyColor = ta.getColor(R.styleable.MyCalendar_todayEmptycircleColor, Color.CYAN); todayFillColor = ta.getColor(R.styleable.MyCalendar_todayFillcircleColor, Color.CYAN); ta.recycle(); this.context = context; init(context); } //該方法用于設(shè)置從服務(wù)器獲取的時間,如果沒有從服務(wù)器獲取的時間將使用手機(jī)本地時間 private void initTime() { Calendar calendar = Calendar.getInstance(); //得到日歷 calendar.setTime(new Date()); calendar.add(Calendar.MONTH,-(maxSelect-1)); time = DateUtils.formatData(calendar.getTime(),Constant.TFORMATE_YMD); timeBefor = DateUtils.getDataTime(time); String now = DateUtils.formatData(new Date(),Constant.TFORMATE_YMD); timeNow = DateUtils.getDataTime(now);// LogUtils.e('之前日期:'+time+'=='+timeBefor);// LogUtils.e('當(dāng)前日期:'+now+'=='+timeNow); curDate = DateUtil.strToCalendar(time, Constant.TFORMATE_YMD); dateFromServer = DateUtil.strToDate(time, Constant.TFORMATE_YMD); } private void init(Context context) { bindView(context); renderCalendar(); } private void bindView(Context context) { View view = LayoutInflater.from(context).inflate(R.layout.appoint_calendarview, this, false); title = (TextView) view.findViewById(R.id.calendar_title); title.setTextColor(titleColor); title.setTextSize(titleSize); layout_calendar_gonext = view.findViewById(R.id.layout_calendar_gonext); layout_calendar_goup = view.findViewById(R.id.layout_calendar_goup); layout_calendar_gonext.setOnClickListener(this); layout_calendar_goup.setOnClickListener(this); recyclerView = (RecyclerView) view.findViewById(R.id.calendar_rv); linearLayoutManager = new LinearLayoutManager(this.context, LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(linearLayoutManager); PagerSnapHelper snapHelper = new PagerSnapHelper(); snapHelper.attachToRecyclerView(recyclerView); addView(view); } public void renderCalendar() { months.clear(); initTime(); for (int i = 0; i < maxSelect; i++) { ArrayList<Date> cells = new ArrayList<>(); if (i != 0) { curDate.add(Calendar.MONTH, 1);//后推一個月 } else { curDate.add(Calendar.MONTH, 0);//當(dāng)前月 } Calendar calendar = (Calendar) curDate.clone(); //將日歷設(shè)置到當(dāng)月第一天 calendar.set(Calendar.DAY_OF_MONTH, 1); //獲得當(dāng)月第一天是星期幾,如果是星期一則返回1此時1-1=0證明上個月沒有多余天數(shù) int prevDays = calendar.get(Calendar.DAY_OF_WEEK) - 1; //將calendar在1號的基礎(chǔ)上向前推prevdays天。 calendar.add(Calendar.DAY_OF_MONTH, -prevDays); //最大行數(shù)是6*7也就是,1號正好是星期六時的情況 int maxCellcount = 6 * 7; while (cells.size() < maxCellcount) { cells.add(calendar.getTime()); //日期后移一天 calendar.add(calendar.DAY_OF_MONTH, 1); } months.add(new CalendarCell(i, cells)); } for (int i = 0; i < months.size(); i++) { //title格式 2018年6月3日 String title = (months.get(i).getCells().get(20).getYear() + 1900) + 't-t' + (months.get(i).getCells().get(20).getMonth() + 1); titles.add(title); } title.setText(titles.get(maxSelect-1)); //只限定3個月,因此模擬給3個數(shù)值即可 mainAdapter = new MainRvAdapter(R.layout.appoint_calendarview_item, months); recyclerView.setAdapter(mainAdapter); //recyclerview 的滾動監(jiān)聽 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { title.setText(titles.get(linearLayoutManager.findLastVisibleItemPosition())); super.onScrollStateChanged(recyclerView, newState); } }); recyclerView.scrollToPosition(maxSelect-1); } @Override public void onClick(View v) { int index = linearLayoutManager.findLastVisibleItemPosition(); LogUtils.e('當(dāng)前項'+index); switch (v.getId()){ case R.id.layout_calendar_gonext: if(index < maxSelect-1){ recyclerView.scrollToPosition(index+1); title.setText(titles.get(index+1)); } break; case R.id.layout_calendar_goup: if(index > 0){ recyclerView.scrollToPosition(index-1); title.setText(titles.get(index-1)); } break; } } /** * 最外層水平recyclerview的adapter */ private class MainRvAdapter extends BaseQuickAdapter<CalendarCell, BaseViewHolder> { public MainRvAdapter(int layoutResId, @Nullable List<CalendarCell> data) { super(layoutResId, data); } @Override protected void convert(BaseViewHolder helper, final CalendarCell item) { if (((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).getLayoutManager() == null) { //RecyclerView不能都使用同一個LayoutManager GridLayoutManager manager = new GridLayoutManager(mContext, 7); //recyclerview嵌套高度不固定(wrap_content)時必須setAutoMeasureEnabled(true),否則測量時控件高度為0 manager.setAutoMeasureEnabled(true); ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setLayoutManager(manager); } SubRvAdapter subRvAdapter = null; if (allAdapters.get(helper.getPosition()) == null) { subRvAdapter = new SubRvAdapter(R.layout.calendar_text_day, item.getCells()); allAdapters.put(helper.getPosition(), subRvAdapter); ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter); } else { subRvAdapter = allAdapters.get(helper.getPosition()); ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter); } //item 點擊事件響應(yīng) subRvAdapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { Date date = item.getCells().get(position); if(date.getTime() >= timeBefor && date.getTime()<= timeNow ){ if (isSelectingSTime) { //正在選擇開始時間 selectSDate(item.getCells().get(position)); } else { //正在選擇結(jié)束時間 selectEDate(item.getCells().get(position)); } } //更新所有的adapter,比如今天6月,需要更新6、7、8三個月份不同adapter Iterator iterator = allAdapters.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); ((SubRvAdapter) entry.getValue()).notifyDataSetChanged(); } } }); } } public void selectSDate(Date date) { if (sDateTime != null && eDateTime != null) { sDateTime = date; notifyDateSelectChanged(); } else { sDateTime = date; notifyDateSelectChanged(); } eDateTime = null; isSelectingSTime = false; /** 當(dāng)前沒有選擇結(jié)束時間*/ if(this.calendaSelListener != null){ calendaSelListener.selectStatus(false); } } public void selectEDate(Date date) { if (sDateTime != null) { if (date.getTime() >= sDateTime.getTime()) { eDateTime = date; isSelectingSTime = true; notifyDateSelectChanged(); }else { eDateTime = sDateTime; sDateTime = date; isSelectingSTime = true; notifyDateSelectChanged(); } /** 選擇完成*/ if(this.calendaSelListener != null){ calendaSelListener.selectStatus(true); } } } /** * 通知開始時間跟結(jié)束時間均改變 */ public void notifyDateSelectChanged() { if (mETimeSelectListener != null && eDateTime != null) { mETimeSelectListener.onETimeSelect(eDateTime); } if (mSTimeSelectListener != null && sDateTime != null) { mSTimeSelectListener.onSTimeSelect(sDateTime); } } private class SubRvAdapter extends BaseQuickAdapter<Date, BaseViewHolder> { public SubRvAdapter(int layoutResId, @Nullable List<Date> data) { super(layoutResId, data); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @Override protected void convert(BaseViewHolder helper, Date date) { helper.setIsRecyclable(false);//不讓recyclerview進(jìn)行復(fù)用,復(fù)用會出問題 ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setEmptyColor(todayEmptyColor); ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setFillColor(todayFillColor); int day = date.getDate(); //設(shè)置文本 ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setText(String.valueOf(day)); //設(shè)置顏色 if(date.getTime() >= timeBefor && date.getTime()<= timeNow ){ ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(enableSelectColor); }else { ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(disableSeletColor); } //更改選中文字顏色 if(sDateTime != null && eDateTime != null){ if(date.getTime()>sDateTime.getTime() && date.getTime()<eDateTime.getTime()){ ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSelected(true); helper.getView(R.id.calendar_day_rl).setBackgroundColor(getResources().getColor(R.color.date_duration_bg)); } } /****************************/ if (eDateTime != null && date.getTime() == eDateTime.getTime()) { //結(jié)束時間 if(eDateTime.equals(sDateTime)){ ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isSameDay(); }else { ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isETime(true); } ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isETime(true); } if (sDateTime != null && date.getTime() == sDateTime.getTime()) { //開始時間 if (eDateTime != null) { if(eDateTime.equals(sDateTime)) { ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isSameDay(); }else { ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isSTime(true); } ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true); } else { ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isDurationSun(true); ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true); } } /*****************************************/ if(date.getTime() == timeNow){ ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setToday(true); } } } private class CalendarCell { private int position; ArrayList<Date> cells; public CalendarCell(int position, ArrayList<Date> cells) { this.position = position; this.cells = cells; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; } public ArrayList<Date> getCells() { return cells; } public void setCells(ArrayList<Date> cells) { this.cells = cells; } } //開始時間的選擇監(jiān)聽 public interface CalendarSTimeSelListener { void onSTimeSelect(Date date); } private CalendarSTimeSelListener mSTimeSelectListener; public void setSTimeSelListener(CalendarSTimeSelListener li) { mSTimeSelectListener = li; } //結(jié)束時間的監(jiān)聽事件 public interface CalendatEtimSelListener { void onETimeSelect(Date date); } private CalendaSelListener calendaSelListener; /**選擇日期完整性*/ public interface CalendaSelListener{ void selectStatus(boolean isOk); } public void setCalendaSelListener(CalendaSelListener calendaSelListener) { this.calendaSelListener = calendaSelListener; } private CalendatEtimSelListener mETimeSelectListener; public void setETimeSelListener(CalendatEtimSelListener li) { mETimeSelectListener = li; }}

3.自定義view用到的布局 appoint_calendarview.xml,對應(yīng)日歷控件如下面圖片的部分。

Android 自定義日期段選擇控件功能(開始時間-結(jié)束時間)

<?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:layout_marginTop='15dp' android:orientation='vertical'> <RelativeLayout android:layout_width='match_parent' android:layout_height='20dp' android:gravity='center_vertical' android:orientation='horizontal'> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_centerInParent='true' android:text='2018年' android:textColor='@color/text_lable' android:textSize='15dp'/> <RelativeLayout android: android:layout_width='wrap_content' android:layout_height='match_parent' android:layout_alignParentRight='true' android:paddingLeft='15dp' android:paddingRight='15dp' > <ImageView android:layout_width='10dp' android:layout_height='10dp' android:layout_centerVertical='true' android:src='http://www.gepszalag.com/bcjs/@mipmap/icon_arrow_right' /> </RelativeLayout> <RelativeLayout android: android:layout_width='wrap_content' android:layout_height='match_parent' android:paddingLeft='15dp' android:paddingRight='15dp' > <ImageView android:layout_width='10dp' android:layout_height='10dp' android:layout_centerVertical='true' android:src='http://www.gepszalag.com/bcjs/@mipmap/icon_back_black' /> </RelativeLayout> </RelativeLayout> <LinearLayout android: android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_marginTop='15dp' android:gravity='center_vertical' android:orientation='horizontal' > <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/sun' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/mon' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/tue' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/wed' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/thu' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/fri' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> <TextView android:layout_width='0dp' android:layout_height='wrap_content' android:layout_gravity='center_vertical' android:layout_weight='1' android:text='@string/sat' android:textAlignment='center' android:textColor='#555' android:textSize='13dp' /> </LinearLayout> <android.support.v7.widget.RecyclerView android: android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_marginTop='10dp' android:overScrollMode='never' /></LinearLayout>

定義控件選擇后的背景部分:CalendarDayRelativeLayout.java

import android.content.Context;import android.graphics.Color;import android.os.Build;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.widget.RelativeLayout; public class CalendarDayRelativeLayout extends RelativeLayout { public CalendarDayRelativeLayout(Context context) { this(context, null); } public CalendarDayRelativeLayout(Context context, AttributeSet attrs) { super(context, attrs); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void isDurationSat(boolean isSaturday) { this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sat_bg)); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void isDurationSun(boolean isSunday) { this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sun_bg)); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void isETime(boolean etime) {// this.setBackgroundResource(getResources().getDrawable(R.drawable.)); this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sat_bg)); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void isSTime(boolean stime) {// this.setBackground(getResources().getDrawable(R.mipmap.appoint_calendar_start_bg)); this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sun_bg)); } /** * 同一天 * */ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void isSameDay(){ this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_same_bg)); }}

自定義控件內(nèi)日期的CalendarDayTextView.java

import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Typeface;import android.util.AttributeSet; /** * @Description: 日歷內(nèi)日期 * @Author MengXY * @Date 2019/1/8*/public class CalendarDayTextView extends android.support.v7.widget.AppCompatTextView { public boolean isToday; private boolean isSTime; private boolean isETime; private Context context; public void setEmptyColor(int emptyColor) { this.emptyColor = emptyColor; } public void setFillColor(int fillColor) { this.fillColor = fillColor; } private int emptyColor = Color.parseColor('#00ff00'); private int fillColor = Color.parseColor('#00ff00'); private Paint mPaintSTime; private Paint mPaintETime; public CalendarDayTextView(Context context) { super(context); initview(context); } public CalendarDayTextView(Context context, AttributeSet attrs) { super(context, attrs); initview(context); } private void initview(Context context) { this.context=context;// mPaintSTime = new Paint(Paint.ANTI_ALIAS_FLAG);// mPaintSTime.setStyle(Paint.Style.FILL);// mPaintSTime.setColor(context.getResources().getColor(R.color.date_time_bg));// mPaintSTime.setStrokeWidth(2);//// mPaintETime = new Paint(Paint.ANTI_ALIAS_FLAG);// mPaintETime.setStyle(Paint.Style.FILL);// mPaintETime.setColor(context.getResources().getColor(R.color.date_time_bg));// mPaintETime.setStrokeWidth(2); } @Override protected void onDraw(Canvas canvas) { //根據(jù)當(dāng)前邏輯開始時間必須先繪制結(jié)束時間// if (isETime) {// canvas.save();// //移動到當(dāng)前控件的中心,以中心為圓點繪制實心圓// canvas.translate(getWidth() / 2, getHeight() / 2);// canvas.drawCircle(0, 0, getWidth() / 2 , mPaintETime);// canvas.restore();// //此處必須將圓移動回開始位置,否則文本顯示會受到影響// canvas.translate(0, 0);// }//// if (isSTime) {// canvas.save();// //移動到當(dāng)前控件的中心,以中心為圓點繪制實心圓// canvas.translate(getWidth() / 2, getHeight() / 2);// canvas.drawCircle(0, 0, getWidth() / 2 , mPaintSTime);// canvas.restore();// //此處必須將圓移動回開始位置,否則文本顯示會受到影響// canvas.translate(0, 0);// } super.onDraw(canvas); } public void setToday(boolean today) { isToday = today; this.setTextColor(context.getResources().getColor(R.color.text_main_tab_select)); } public void isETime(boolean etime) { isETime = etime;// this.setTextColor(context.getResources().getColor(R.color.date_time_tv));// this.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); isSelected(true); } public void isSTime(boolean stime) { isSTime = stime; isSelected(true);// this.setTextColor(context.getResources().getColor(R.color.date_time_tv));// this.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); } public void isSelected(boolean isSelcted){ if(isSelcted){ this.setTextColor(context.getResources().getColor(R.color.date_time_tv)); this.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); }else { this.setTextColor(context.getResources().getColor(R.color.text_lable)); } }}

appoint_calendarview.xml

<?xml version='1.0' encoding='utf-8'?><android.support.v7.widget.RecyclerView xmlns:android='http://schemas.android.com/apk/res/android' android: android:layout_width='match_parent' android:layout_height='wrap_content'> </android.support.v7.widget.RecyclerView>

calendar_text_day.xml

<?xml version='1.0' encoding='utf-8'?><com.包名.CalendarDayRelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='44dp' android:gravity='center' android: android:layout_marginTop='5dp' android:layout_marginBottom='5dp' > <com..包名.CalendarDayTextView android: android:layout_width='44dp' android:layout_height='44dp' android:layout_centerInParent='true' android:gravity='center' android:textColor='@color/white' android:text='31' android:includeFontPadding='false' android:textSize='13dp'/></com..包名.CalendarDayRelativeLayout>

DateUtil.java

import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class DateUtil { //Calendar 轉(zhuǎn)化 String public static String calendarToStr(Calendar calendar,String format) {// Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(calendar.getTime()); } //String 轉(zhuǎn)化Calendar public static Calendar strToCalendar(String str,String format) {// String str = '2012-5-27'; SimpleDateFormat sdf = new SimpleDateFormat(format); Date date = null; Calendar calendar = null; try { date = sdf.parse(str); calendar = Calendar.getInstance(); calendar.setTime(date); } catch (ParseException e) { e.printStackTrace(); } return calendar; } // Date 轉(zhuǎn)化String public static String dateTostr(Date date,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format);// String dateStr = sdf.format(new Date()); String dateStr = sdf.format(date); return dateStr; } // String 轉(zhuǎn)化Date public static Date strToDate(String str,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); Date date = null; try { date = sdf.parse(str); } catch (ParseException e) { e.printStackTrace(); } return date; } //Date 轉(zhuǎn)化Calendar public static Calendar dateToCalendar(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar; } //Calendar轉(zhuǎn)化Date public static Date calendarToDate(Calendar calendar) { return calendar.getTime(); } // String 轉(zhuǎn)成 Timestamp public static Timestamp strToTimeStamp(String str) {// Timestamp ts = Timestamp.valueOf('2012-1-14 08:11:00'); return Timestamp.valueOf(str); } //Date 轉(zhuǎn) TimeStamp public static Timestamp dateToTimeStamp(Date date,String format) { SimpleDateFormat df = new SimpleDateFormat(format); String time = df.format(new Date()); Timestamp ts = Timestamp.valueOf(time); return ts; }}

4.資源文件 /drawableappoint_calendar_sat_bg.xml //開始時間

<shape xmlns:android='http://schemas.android.com/apk/res/android'> <corners android:topRightRadius='44dp' android:bottomRightRadius='44dp'/> <size android: /> <solid android:color='#41D2C4'/></shape>

appoint_calendar_sun_bg.xml //結(jié)束時間

<shape xmlns:android='http://schemas.android.com/apk/res/android'> <corners android:bottomLeftRadius='44dp' android:topLeftRadius='44dp' /> <size android: /> <solid android:color='#41D2C4' /></shape>

appoint_calendar_same_bg.xml //開始時間和結(jié)束時間是同一天

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android' > <solid android:color='@color/date_duration_bg' /> <corners android:radius='60dp' /></shape>

/value

<string name='sun'>日</string><string name='mon'>一</string><string name='tue'>二</string><string name='wed'>三</string><string name='thu'>四</string><string name='fri'>五</string><string name='sat'>六</string> <color name='date_duration_bg'>#41D2C4</color>

5.在activity中使用 activity_selectdate.xml

<?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' xmlns:app='http://schemas.android.com/apk/res-auto' android:background='@color/white' android:orientation='vertical'> <RelativeLayout android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_marginTop='40dp'> <FrameLayout android: android:layout_width='10dp' android:layout_height='1dp' android:layout_centerInParent='true' android:background='#35C1B5' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_toLeftOf='@+id/layout_line' android:layout_marginRight='22.5dp' android:textColor='#35C1B5' android:textSize='14dp' android:text='@string/starTime' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_toRightOf='@+id/layout_line' android:layout_marginLeft='22.5dp' android:textColor='#35C1B5' android:textSize='14dp' android:text='@string/endTime' /> </RelativeLayout> <FrameLayout android:layout_width='match_parent' android:layout_height='0.5dp' android:layout_marginTop='10dp' android:background='@color/bg_line' /> <com.包名.CalendarView android: android:layout_width='match_parent' android:layout_height='wrap_content' app:titleColor = '@color/text_lable' /></LinearLayout>

SelectTimeActivity.java

public class SelectTimeActivity extends BaseActivity { @BindView(R.id.tv_title) TextView tvTitle; @BindView(R.id.iv_title_back) ImageView ivTitleBack; @BindView(R.id.tv_title_left) TextView tvTitleLeft; @BindView(R.id.layout_title_left) RelativeLayout layoutTitleLeft; @BindView(R.id.tv_title_right) TextView tvTitleRight; @BindView(R.id.layout_title_right) RelativeLayout layoutTitleRight; @BindView(R.id.layout_line) FrameLayout layoutLine; @BindView(R.id.tv_startime) TextView tvStartime; @BindView(R.id.tv_endtime) TextView tvEndtime; @BindView(R.id.calendarview) CalendarView calendarview; private String starTime; private String endTime; private boolean isSelecgOk = false; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_selectdate); ButterKnife.bind(this); setStatusBar(true); initView(); } private void initView() { tvTitle.setText(getString(R.string.selectTime)); ivTitleBack.setVisibility(View.GONE); tvTitleLeft.setText(getString(R.string.cancel)); tvTitleRight.setText(getString(R.string.confirm)); calendarview.setETimeSelListener(new CalendarView.CalendatEtimSelListener() { @Override public void onETimeSelect(Date date) { if (date != null) { endTime = DateUtils.formatData(date, Constant.TFORMATE_YMD); tvEndtime.setText(endTime); }else { endTime = null; } } }); calendarview.setSTimeSelListener(new CalendarView.CalendarSTimeSelListener() { @Override public void onSTimeSelect(Date date) { if (date != null) { starTime = DateUtils.formatData(date, Constant.TFORMATE_YMD); tvStartime.setText(starTime); }else { starTime = null; } } }); calendarview.setCalendaSelListener(new CalendarView.CalendaSelListener() { @Override public void selectStatus(boolean isOk) { isSelecgOk = isOk; } }); } @OnClick({R.id.tv_title_left, R.id.tv_title_right}) public void onClick(View view) { switch (view.getId()) { case R.id.tv_title_left: finish(); break; case R.id.tv_title_right: if(TextUtils.isEmpty(starTime)){ ToastUtils.showToast(getString(R.string.history_alert1)); return; } if(TextUtils.isEmpty(endTime) || !isSelecgOk){ ToastUtils.showToast(getResources().getString(R.string.history_alert)); return; } Intent intent = new Intent(); intent.putExtra('starTime',starTime); intent.putExtra('endTime',endTime); setResult(RESULT_OK,intent); finish(); break; } }}

RecyclerAdapter引用

implementation ’com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30’

到此這篇關(guān)于Android 自定義日期段選擇控件,開始時間-結(jié)束時間。的文章就介紹到這了,更多相關(guān)Android 自定義日期段選擇控件,開始時間-結(jié)束時間。內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 色花av| 国产一区二区三区在线 | 一片毛片 | 欧美久久视频 | 亚洲精品视频一区二区三区 | 久久九 | 天堂网av2020 | 成人三级在线 | 亚洲va中文字幕 | 国产99久久精品一区二区永久免费 | 电影91久久久 | 久久成人免费观看 | 国产欧美日韩综合精品一区二区 | 国产情品| 久久不卡| 可以免费看黄的网站 | 国产在线一区二区三区 | 91高清免费 | 一区视频在线 | 2012中文版免费观看 | 国产欧美日韩精品在线 | 亚洲一区二区三区在线免费观看 | 久久美女视频 | 天天干欧美 | 精品96久久久久久中文字幕无 | 中文字字幕在线观看 | av网站久久 | 国产精品久久二区 | yy6080久久伦理一区二区 | 精品亚洲一区二区 | 综合天天| 亚洲欧美日韩国产综合 | 日韩另类| 国产精品亚洲成在人线 | 第一色视频 | www天天干| 日韩欧美国产一区二区三区 | 日本久久久久久 | 99re国产| 99精品欧美一区二区三区综合在线 | 亚洲精品一区二区网址 | 欧美一区在线观看视频 | 色天天综合久久久久综合片 | 久久久久久免费毛片精品 | 久久久精品欧美一区二区免费 | 97精品视频在线 | 亚洲一区视频在线 | 欧美日韩国产高清视频 | 国产精品久久天天躁 | 日本一区二区三区四区 | 91大片| 探花在线观看 | 国产精品一区二区三区在线 | 午夜影院在线观看 | 国产精品久久久久久久竹霞 | 国产中文在线播放 | 欧美一二区 | 亚洲欧美日韩另类精品一区二区三区 | 欧美一区 | 国产欧美日韩精品一区 | 久草国产视频 | 亚洲国产精品成人久久久 | 国产剧情一区二区三区 | www.国产视频 | 午夜国产影院 | 午夜激情在线观看 | 日本黄色毛片 | 久久精品亚洲精品国产欧美 | 伊人久久国产 | 亚洲综合精品 | 久久亚洲一区二区三区四区五区高 | 国产高清一区二区 | 国产精品视频一区二区三区不卡 | 日本精品一区二区三区视频 | 亚洲一区在线日韩在线深爱 | 天天天干天天射天天天操 | 日本精品网站 | 国产视频色| 欧美亚洲日本 | 精品国产一区二区三区日日嗨 | 国产无区一区二区三麻豆 | 亚洲精品久久久久久久久久久 | 亚州精品天堂中文字幕 | 成人黄色av | 免费的日本网站 | 国产一区二| 精品一区二区三 | 欧美一级免费看 | 久久精品无码一区二区三区 | 日韩精品在线网站 | 国产亚洲精品一区二区 | 青青久草 | 天天操狠狠操网站 | 国产色视频网站 | 最新日韩欧美 | 国产精品91网站 | 欧美黑人一级爽快片淫片高清 | 免费在线观看一级毛片 | 日韩精品一区二区三区在线播放 | 午夜精品久久久久久久星辰影院 | 日韩视频一区二区三区 | 国产精品久久久久久久久免费桃花 | 午夜免费福利影院 | 日本高清精品 | 午夜激情福利视频 | 国产亚洲精品久久久久动 | 91亚洲精品乱码久久久久久蜜桃 | 国产在线视频在线 | 青青草超碰在线 | 国产成人午夜高潮毛片 | 羞羞视频网站 | 国产免费av一区二区三区 | 一级电影院 | 美女一级a毛片免费观看97 | 一区视频| 台湾佬成人网 | 美女精品视频在线 | 国产剧情一区二区 | 国产一区二区视频在线 | 亚洲狠狠爱一区二区三区 | 日日骚av | 成av人片在线观看www | 成人亚洲在线观看 | 久久中文字幕一区 | 久久精品国产视频 | 91网站免费 | 久久精品亚洲一区 | 成人欧美一区二区三区视频xxx | 亚洲国产欧美日韩 | 日韩中文视频 | 亚洲综合成人网 | 999久久国产| 精国产品一区二区三区四季综 | 视频一区在线观看 | 少妇激烈床戏视频 | 一本大道久久a久久精二百 亚洲欧美高清 | 国产激情午夜 | 欧美美乳| 桃花久久 | 亚洲人成在线播放 | 日韩免费网站 | 久久99国产一区二区三区 | 国产成人av在线播放 | 国产精品入口麻豆www | 91精品国产综合久久久久久丝袜 | 日本高清视频网站 | 日本人做爰大片免费观看一老师 | 毛片网站大全 | 国产精彩视频 | 视频在线一区二区三区 | 99精品欧美一区二区三区综合在线 | 狠狠综合| 久草成人网| 日韩午夜免费视频 | 国产精品久久久久久久毛片 | 91在线视频观看 | 免费av一区二区三区 | 91免费看 | 美女视频黄的免费 | 日韩一区二区三区福利视频 | 国产资源视频在线观看 | 免费毛片网站 | 午夜影院a| 不卡免费在线视频 | 欧美成人激情视频 | 国产综合精品 | 欧美一级黄色网 | 蜜月久久99静品久久久久久 | 久久艹久久 | 欧美一级成人欧美性视频播放 | 国产高清精 | 欧美精品中文字幕久久二区 | 亚洲一区二区久久 | 国产区视频在线观看 | 91中文字幕在线 | 北条麻妃一区二区在线 | 日韩精品视频在线播放 | 精品久久久精品 | 国产二区三区 | 国产成人中文字幕 | 国产精品久久久久一区二区三区共 | 三级黄色片在线 | 亚洲欧美电影 | 老司机午夜免费精品视频 | 日韩欧美在线不卡 | 婷婷桃色网 | 日韩成人黄色 | 久久av一区二区 | 一区二区日韩精品 | 国产福利片在线 | 亚洲成人精品在线 | 国产精品一区二区在线观看 | 国产一级特黄aaa | 国产精品久久久久久久久久99 | 国产免费一区二区三区 | 国产最新精品 | 九九九视频精品 | 国产成人久久精品一区二区三区 | 久久不卡日韩美女 | 国产美女久久 | 国产精品毛片一区视频播 | 91免费在线 | 全黄大全大色全免费大片 | www.成人| 久久久www成人免费无遮挡大片 | 男女全黄一级一级高潮免费看 | 日本视频一区二区三区 | 久久久夜夜夜 | 成人作爱视频 | 日本一区二区电影 | 黄色av免费看| 日韩91| 黄色毛片看看 | a视频在线免费观看 | 91精品视频在线播放 | 色吊丝2288sds中文字幕 | 久久久久综合狠狠综合日本高清 | 欧美一级一区 | 亚洲精品美女在线观看 | 最新国产中文字幕 | 奇米二区| 伊人狠狠干 | 中文字幕精品一区久久久久 | 日韩免费一区 | 国产午夜精品久久 | 久久久久成人精品 | 欧美精品久久一区 | 精品国产一区二区三区久久影院 | 在线视频一区二区三区 | 成人午夜影院 | 国产精品一区av | 国产精品久久久久久久久污网站 | 亚洲va欧美va天堂v国产综合 | 国产成人精品一区二区三区在线 | 玖玖综合网 | 精品国产91亚洲一区二区三区www | 黄色成人在线 | 综合久久综合久久 | 黄色一级片在线观看 | 99精品网 | 久久精品国产99国产 | 亚洲啪啪网站 | 国产精品一二 | 免费黄看片| 国产精品原创巨作av | 日韩午夜免费 | 精品一级 | 国产三区在线观看视频 | 亚洲国产精品免费 | 99久久99久久精品 | 亚洲一区二区三区四区五区中文 | 一区二区三区 在线 | a级性生活 | 91精品国产日韩91久久久久久 | 中文字幕精品一区二区三区精品 | 亚洲二区视频 | 欧美视频一二 | 天天舔天天爽 | 久久久精品一区二区三区 | 成人一区在线观看 | 日韩在线观看 | 亚洲视频在线观看一区二区三区 | 狠狠草视频 | 国产精品永久 | 国产精品免费av | 久久不卡日韩美女 | 欧美一级在线 | 国产精品国产三级国产aⅴ中文 | 91麻豆精品国产91久久久资源速度 | 国产精品片aa在线观看 | 成人欧美 | 国产精品美女www爽爽爽动态图 | 日韩一区二区不卡 | 国产一级黄色大片 | 欧美国产日韩一区 | 好姑娘影视在线观看高清 | 北条麻妃国产九九九精品小说 | 在线日韩成人 | 成人一级 | 一区精品视频 | www.国产精 | 欧美精品一区二区三区四区 | 国产欧美精品一区二区色综合 | 欧美成人精品一区 | jlzzjlzz国产精品久久 | 荷兰欧美一级毛片 | 精品国精品国产自在久不卡 | 欧美日韩高清在线一区 | 黄网在线观看 | 成人免费视频在线观看 | 国产视频大全 | 欧美自拍视频在线 | 日韩成人影院 | 久久99一区二区 | 国产一区精品电影 | 天天澡天天狠天天天做 | 中文字幕视频在线观看 | 精品久久久久久久久久久久久 | 中文久久| 韩国成人精品a∨在线观看 国产伊人av | 天天干天天插 | 成年人黄色一级毛片 | 国产高清在线精品一区二区三区 | 在线播放中文字幕 | 青青草亚洲| 欧美日韩激情在线 | 男女啪啪免费网站 | 中文字幕 在线观看 | 亚洲精品99| 精品久久久久久久久久久久久久 | 一区二区在线电影 | 欧美日韩一二三 | 国产福利视频在线观看 | 久热精品视频 | 国产欧美精品区一区二区三区 | 中文字幕国产 | 一级毛片黄 | 精品久久久久久亚洲综合网 | 在线观看毛片网站 | 国外爱爱视频 | 日韩精品一区二区三区四区五区 | 国产精品久久一区二区三区 | 超碰人人射 | 欧美 日韩 在线播放 | 草久网 | 手机看片169 | 粉嫩视频在线观看 | 国产精品久久久久久久久免费桃花 | av在线播放网站 | 欧美国产日韩一区 | 视频一区二区国产 | 国产精品自产拍在线观看桃花 | 黄色91在线 | 876av国产精品电影 | 亚洲精品自在在线观看 | 亚洲一区二区 | 中文在线一区 | 一级特黄aaa大片在线观看 | 91亚洲免费视频 | 免费观看av电影 | 亚洲精品乱码久久久久久花季 | 91啦| 黄色一级毛片 | 视频精品一区二区三区 | 国产精品久久久久久妇女6080 | 国产一级视频 | 欧美一区二区三区男人的天堂 | 一区二区三区四区视频 | 精品国产乱码一区二区三 | 日本精品一区二 | 国产成人免费视频 | 久久成人免费视频 | 成人午夜电影网 | 国产在线一区二区三区 | 黑人巨大精品欧美一区二区免费 | 中国妞xxxhd露脸偷拍视频 | 电影91久久久 | 久久精品91久久久久久再现 | 国产xxxx成人精品免费视频频 | 美女精品视频 | 欧美成人精品激情在线观看 | 天天操操| 国产大片在线观看 | 成人精品视频免费在线观看 | 青青久草| 日韩精品专区在线影院重磅 | 精品亚洲一区二区三区 | 四虎最新影视 | 日日爱视频 | 精品久久久久久久久久久 | 中文字幕视频在线 | 欧美一区二区三区黄色 | 久久人人爽人人爽人人片av高清 | 亚洲午夜av | 日韩精品视频在线播放 | 欧美天天 | 夜夜艹 | 欧美日韩一区二区电影 | 久久久久国产一区二区三区 | 亚洲区在线 | 色性av| 毛片a在线 | 欧美精品欧美激情 | 99伊人| 国产欧美一区二区 | 欧美精品久久久 | 一区二区日韩欧美 | 亚洲 欧美 另类 综合 偷拍 | www.国产视频 | 亚洲国产精品福利 | 国产精品久久久久久无遮挡 | 波多野结衣 一区二区 | 亚洲嫩草| 国产亚洲综合精品 | 夜夜爽99久久国产综合精品女不卡 | 久久久精彩视频 | 九九热精品视频在线观看 | 久久成| 国产精品永久在线观看 | 91在线观看网站 | 日韩在线免费 | 国产精品无码久久久久 | 九色91九色porny永久 | www.日韩三级| 久久av一区二区 | 爱爱网址 | 日韩专区一区二区三区 | 国产精品久久久久久中文字 | 日韩免费在线视频 | 天天插天天射天天干 | 一区在线视频 | 中文在线视频 | 国产成人免费视频网站高清观看视频 | 色先锋av资源中文字幕 | 欧美大片在线看免费观看 | 91佛爷在线观看 | 一级片观看 | 日韩在线视频精品 | www国产一区 | 99精品欧美一区二区三区综合在线 | 亚洲欧美日韩在线一区二区 | 国产999精品久久久久久麻豆 | 91影院| 一区二区三区在线免费 | 天天看天天爽 | 久久国产精品视频 | 一级黄色录像视频 | 黄色影片免费在线观看 | 精品久久久久久久久久久下田 | 久久久国产视频 | 精品人成 | 日韩欧美理论片 | 成人激情视频在线观看 | 国产成人精品久久 | 国产精品美女久久久 | 国产激情一区二区三区成人免费 | 九一视频在线观看 | 午夜精品一区 | 国产男女视频在线观看 | 日韩在线观看 | 国产精品一区二区三区四区五区 | 美女久久久久 | 成人久久久精品国产乱码一区二区 | 欧美区国产 | 成人免费视频网站 | 在线国产视频 | 久久久精品国产 | 色综合色综合 | 中文字幕天堂在线 | 久草网站 | 成人免费视频网站在线观看 | 亚洲一区二区在线视频 | 亚洲免费在线视频 | av黄色在线免费观看 | 91亚洲狠狠婷婷综合久久久 | 亚洲精品视频免费 | 久久久精品综合 | 久久无码精品一区二区三区 | 看毛片的网站 | 欧美黄色一区 | 日韩一区中文字幕 | 国产免费一区二区三区 | 九九视频这里只有精品 | 欧美日韩综合视频 | 一区二区中文字幕 | 亚洲精品乱码久久久久久久久 | 欧美日韩中文在线观看 | 蜜桃一区| 日韩一二三区视频 | 亚洲第1页 | 国产精品一区二区久久 | 99亚洲精品 | 国产成人欧美一区二区三区的 | 成av在线 | 国产精品无码专区在线观看 | www.中文字幕.com| 国产亚洲精品久久久闺蜜 | 在线国产欧美 | 成人深夜福利在线观看 | 亚洲精品电影在线观看 | 综合久久综合 | 欧美久久一区二区三区 | 特黄特黄视频 | av在线精品 | 免费在线一区二区三区 | av免费黄色 | av在线免费观看一区二区 | 国产精品久久久爽爽爽麻豆色哟哟 | 操人视频网站 | av在线中文 | 精品国产欧美一区二区三区成人 | 国产精品一区二区三区在线 | 国产精品一区二区三区在线 | 另类久久 | 亚洲精品免费视频 | 日本淫视频 | 精品久久中文 | 免费观看av毛片 | 国产成人精品一区二区三区四区 | 精品国产一区二区三区免费 | 亚洲日本精品视频 | 丰满少妇久久久久久久 | 亚洲每日更新 | 亚洲视频中文字幕 | 成人a在线视频免费观看 | 久久精品性视频 | 中文字幕久久精品 | 欧美午夜一区二区三区免费大片 | 亚洲97 | 有码在线 | 天天夜碰日日摸日日澡 | www色婷婷 | 偷拍自拍亚洲欧美 | 精品www| 91精品久久久久久久久中文字幕 | 免费看爱爱视频 | 欧美午夜精品一区二区三区电影 | 日日摸夜夜添夜夜添高潮视频 | 国产一区二区三区在线免费观看 | 日本综合视频 | 一区二区亚洲视频 | 综合视频一区二区三区 | 日韩在线视频精品 | 欧美日韩在线免费 | 亚洲视频在线观看 | 免费成人av在线 | 国产精品婷婷午夜在线观看 | 91视频入口 | 美女主播精品视频一二三四 | 久久草在线视频 | 亚洲高清电影 | 日韩精品一区二区三区第95 | 美女网站视频免费黄 | 午夜精品久久久久久久 | 亚洲 精品 综合 精品 自拍 | 激情91 | 亚洲一区二区三区精品视频 | 精品三区 | 成人av网站在线 | 视频精品一区二区 | 欧美日韩国产影院 | 欧美五月 | 999国产| 日干夜干天天干 | 国产一区二区在线播放 | 国产精品第一国产精品 | 欧洲精品一区二区 | 久久久久91 | 在线不卡一区 | 国产日韩欧美一区二区 | 天堂在线一区二区 | 综合久久综合久久 | 人人草人人 | 日韩一区二区免费视频 | 国产人体视频 | 成人免费视频 | 中文成人在线 | 国产日韩视频在线播放 | 国产黄色大片 | 国产视频一二三区 | 2021最新热播中文字幕-第1页-看片视频 青青青久草 | 美女久久 | 国产成人网 | 一级毛片aaaaaa免费看 | 男人的天堂久久精品 | 免费观看一级特黄欧美大片 | 精品一区在线 | 欧美亚洲综合久久 | 91麻豆精品国产91久久久资源速度 | 97理论片| 久久久香蕉 | 久操视频在线观看 | 九九热精品视频 | 国产精品毛片久久久久久 | 精品三级在线观看 | 亚洲精品一区二区在线 | 亚洲国产婷婷香蕉久久久久久99 | 欧美综合久久 | 日本在线视频观看 | 午夜无码国产理论在线 | 色悠久久久 | 成人深夜在线 | 精品伦精品一区二区三区视频 | 久久亚洲91| 国产精品久久久久久久久久10秀 | 欧美人成在线观看 | 免费毛片在线播放 | 成人精品一区二区 | 国产一区二区三区在线免费观看 | 免费黄色在线 | 日本在线免费电影 | 亚洲精品视频在线观看免费视频 | 亚洲精品久久久久久下一站 | 一区免费在线观看 | 天天干干| 中文字幕亚洲欧美日韩在线不卡 | 日韩影院在线 | 天天艹逼 | 亚洲精品一区二区三区蜜桃久 | 国产一区二区三区四区 | 国内精品国产三级国产在线专 | 日本高清中文字幕 | 久久久天堂国产精品女人 | а天堂中文最新一区二区三区 | 久久精品国产免费 | 免费看国产片在线观看 | 丝袜久久 | 伊人伊人| 久久精品视频一区 | 欧美精品乱码久久久久久按摩 | 国产免费一区二区 | 日本精品中文字幕 | 亚洲综合电影 | av免费网站在线观看 | 成人网在线观看 |