Commit 792e7dad authored by linfeng's avatar linfeng

首页调整和bug修复

parent 1aeabaf4
package com.frame.base.bus;
public class CancelOrderEvent extends Event {
}
...@@ -22,4 +22,5 @@ public final class Constance { ...@@ -22,4 +22,5 @@ public final class Constance {
public static final String ACTIVITY_URL_TRAVELSEARCH ="/rv/search/TravelSearchActivity"; public static final String ACTIVITY_URL_TRAVELSEARCH ="/rv/search/TravelSearchActivity";
public static final String ACTIVITY_URL_WEBVIEW ="/module/basic/WebActivity";
} }
...@@ -7,8 +7,8 @@ android { ...@@ -7,8 +7,8 @@ android {
applicationId "com.test.rv" applicationId "com.test.rv"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 30 versionCode 11
versionName "3.0" versionName "1.0.1"
multiDexEnabled true multiDexEnabled true
//新版Gradle 是 implementation 为了兼容compile,写上这句话 //新版Gradle 是 implementation 为了兼容compile,写上这句话
......
...@@ -174,10 +174,6 @@ ...@@ -174,10 +174,6 @@
<activity <activity
android:name="com.rv.home.rv.module.ui.login.PwdLoginActivity" android:name="com.rv.home.rv.module.ui.login.PwdLoginActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name="com.rv.home.rv.module.ui.main.HomeActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity <activity
android:name="com.rv.home.rv.module.ui.main.home.CarRentalListActivity" android:name="com.rv.home.rv.module.ui.main.home.CarRentalListActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
......
...@@ -6,6 +6,7 @@ import android.os.Bundle; ...@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.widget.TextView; import android.widget.TextView;
import com.base.utils.ui.datetime.selector.util.TextUtil;
import com.frame.base.bus.PaymentFailedEvent; import com.frame.base.bus.PaymentFailedEvent;
import com.frame.base.bus.PaymentSuccessfulEvent; import com.frame.base.bus.PaymentSuccessfulEvent;
import com.frame.base.bus.RxBus; import com.frame.base.bus.RxBus;
...@@ -65,7 +66,6 @@ public class WXPayEntryActivity extends BaseStatusActivity<CommonPresenter> impl ...@@ -65,7 +66,6 @@ public class WXPayEntryActivity extends BaseStatusActivity<CommonPresenter> impl
@Override @Override
public void onResp(BaseResp resp) { public void onResp(BaseResp resp) {
Log.d("Wxpayentryactivity", "onPayFinish, errCode = " + resp.errCode); Log.d("Wxpayentryactivity", "onPayFinish, errCode = " + resp.errCode);
showToast("onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
switch (resp.errCode) { switch (resp.errCode) {
case 0: case 0:
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
<ImageView <ImageView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/live_backgroud3" android:scaleType="centerCrop"
/> android:background="@drawable/start_backgroud"/>
</FrameLayout> </FrameLayout>
...@@ -61,5 +61,4 @@ dependencies { ...@@ -61,5 +61,4 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
api 'com.github.bumptech.glide:okhttp3-integration:4.3.1' api 'com.github.bumptech.glide:okhttp3-integration:4.3.1'
api 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0' api 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0'
} }
...@@ -40,7 +40,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -40,7 +40,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getData(int position, String url, Class<T> bean,boolean isShow) { public <T extends BaseBean>void getData(int position, String url, Class<T> bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxGet(url), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(getApi().rxGet(url), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -56,7 +56,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -56,7 +56,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getData(int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) { public <T extends BaseBean>void getData(int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxGet(url,objectMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(getApi().rxGet(url,objectMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -73,7 +73,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -73,7 +73,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) { public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url,objectMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url,objectMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -91,7 +91,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -91,7 +91,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getDataHead(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> headMap,boolean isShow) { public <T extends BaseBean>void getDataHead(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> headMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxGetHead(url,headMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxGetHead(url,headMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -108,7 +108,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -108,7 +108,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap,Map<String,Object> headMap,boolean isShow) { public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap,Map<String,Object> headMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url,objectMap,headMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url,objectMap,headMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -124,7 +124,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -124,7 +124,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean,boolean isShow) { public <T extends BaseBean>void getData(String baseUrl,int position, String url, Class<T> bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxGet(url), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -141,7 +141,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -141,7 +141,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postData(int position, String url, Class<T> bean,boolean isShow) { public <T extends BaseBean>void postData(int position, String url, Class<T> bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxPost(url), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(getApi().rxPost(url), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -158,7 +158,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -158,7 +158,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postData(int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) { public <T extends BaseBean>void postData(int position, String url, Class<T> bean, Map<String,Object> objectMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxPost(url,objectMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(getApi().rxPost(url,objectMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -174,7 +174,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -174,7 +174,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap, Map<String,Object> headMap,boolean isShow) { public <T extends BaseBean>void postData(String baseUrl,int position, String url, Class<T> bean, Map<String,Object> objectMap, Map<String,Object> headMap,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxPost(url,objectMap,headMap), new RxRequestResult<>(position,bean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxPost(url,objectMap,headMap), new RxRequestResult<>(position,bean,getView()),position);
} }
...@@ -191,7 +191,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -191,7 +191,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Map<String,Object> objectMap, Class<?> bean,boolean isShow) { public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Map<String,Object> objectMap, Class<?> bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxPostBody(url,objectMap,bean), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(getApi().rxPostBody(url,objectMap,bean), new RxRequestResult<>(position,baseBean,getView()),position);
} }
...@@ -206,7 +206,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -206,7 +206,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Object bean,boolean isShow) { public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Object bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(getApi().rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position);
} }
...@@ -221,7 +221,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -221,7 +221,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Object bean,Map<String,Object> mapHead,boolean isShow) { public <T extends BaseBean>void postBodyData(int position, String url, Class<T> baseBean, Object bean,Map<String,Object> mapHead,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(getApi().rxPostBody(url,bean,mapHead), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(getApi().rxPostBody(url,bean,mapHead), new RxRequestResult<>(position,baseBean,getView()),position);
} }
...@@ -238,7 +238,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -238,7 +238,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Object bean,boolean isShow) { public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Object bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position);
} }
...@@ -254,7 +254,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -254,7 +254,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Object bean,Map<String,Object> mapHead,boolean isShow) { public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Object bean,Map<String,Object> mapHead,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean,mapHead), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean,mapHead), new RxRequestResult<>(position,baseBean,getView()),position);
} }
...@@ -270,7 +270,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter ...@@ -270,7 +270,7 @@ public abstract class MvpPresenter<V extends BaseView> extends RetrofitPresenter
*/ */
public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Class<?> bean,boolean isShow) { public <T extends BaseBean>void postBodyData(String baseUrl,int position, String url, Class<T> baseBean, Class<?> bean,boolean isShow) {
if(isShow && getView()!=null){ if(isShow && getView()!=null){
getView().onShowLoading(); // getView().onShowLoading();
} }
toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position); toSubscribe(createService(HttpApi.class,baseUrl).rxPostBody(url,bean), new RxRequestResult<>(position,baseBean,getView()),position);
} }
......
...@@ -14,7 +14,7 @@ import com.ruiwenliu.wrapper.util.ScaleUtils; ...@@ -14,7 +14,7 @@ import com.ruiwenliu.wrapper.util.ScaleUtils;
import java.security.MessageDigest; import java.security.MessageDigest;
public class GlideRoundTransform extends CenterCrop { public class GlideRoundTransform extends CenterCrop {
private static float radius = 10f; private static float radius = 6f;
public GlideRoundTransform(Context context) { public GlideRoundTransform(Context context) {
this(context,10); this(context,10);
} }
......
package com.rv.home.rv.module.ui.main.home.dialog; package com.rv.component.dialog;
import android.app.Activity; import android.app.Activity;
import android.graphics.Rect; import android.graphics.Rect;
...@@ -13,14 +13,8 @@ import android.widget.TextView; ...@@ -13,14 +13,8 @@ import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ruiwenliu.wrapper.dialog.BasePopupWindow; import com.ruiwenliu.wrapper.dialog.BasePopupWindow;
import com.ruiwenliu.wrapper.util.ViewHolder; import com.ruiwenliu.wrapper.util.ViewHolder;
import com.rv.home.R; import com.rv.component.dialog.adapter.OrderPriceDetailAdapter;
import com.rv.home.R2; import com.rv.component.dialog.bean.OrderPriceDetailBean;
import com.rv.home.rv.module.ui.main.home.adapter.CarAttributeAdapter;
import com.rv.home.rv.module.ui.main.home.adapter.OrderPriceDetailAdapter;
import com.rv.home.rv.module.ui.main.home.bean.CarAttributeListBean;
import com.rv.home.rv.module.ui.main.home.bean.OrderPriceDetailBean;
import java.util.List;
/** /**
* Created :Auser * Created :Auser
......
package com.rv.home.rv.module.ui.main.home.adapter; package com.rv.component.dialog.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.rv.home.R; import com.rv.component.dialog.R;
import com.rv.home.R2; import com.rv.component.dialog.bean.OrderPriceDetailBean;
import com.rv.home.rv.module.ui.main.home.bean.OrderPriceDetailBean;
/** /**
* Created :Auser * Created :Auser
......
package com.rv.home.rv.module.ui.main.home.bean; package com.rv.component.dialog.bean;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp" />
<solid android:color="@color/colorAuxiliaryYellow" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp" />
<solid android:color="@color/colorMain" />
</shape>
\ No newline at end of file
package com.base.utils.tools.android; package com.rv.component.utils;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.widget.Toast; import android.widget.Toast;
import com.base.utils.R;
/** /**
* 复制内容到剪贴版 * 复制内容到剪贴版
* Created by YUYIFE on 2018/9/12.
*/ */
public class ClipboardUtil { public class ClipboardUtil {
...@@ -29,9 +26,9 @@ public class ClipboardUtil { ...@@ -29,9 +26,9 @@ public class ClipboardUtil {
//添加ClipData对象到剪切板中 //添加ClipData对象到剪切板中
if (cm != null) { if (cm != null) {
cm.setPrimaryClip(clipData); cm.setPrimaryClip(clipData);
Toast.makeText(baseContext, baseContext.getString(R.string.prompt_copy_success), Toast.LENGTH_SHORT).show(); Toast.makeText(baseContext, "复制成功!", Toast.LENGTH_SHORT).show();
} else { } else {
Toast.makeText(baseContext, baseContext.getString(R.string.prompt_copy_fail), Toast.LENGTH_SHORT).show(); Toast.makeText(baseContext, "复制失败!", Toast.LENGTH_SHORT).show();
} }
} }
} }
package com.rv.component.utils;
import android.content.Context;
import android.text.TextPaint;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.widget.TextView;
/**
* dp、sp 转换为 px 的工具类
*/
public class DisplayUtil {
/**
* 将px值转换为dip或dp值,保证尺寸大小不变
*
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变
*
* @param dipValue
* @return
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
/**
* 将px值转换为sp值,保证文字大小不变
*
* @param pxValue
* @return
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
*
* @param spValue
* @return
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
public static int getWidth(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
return dm.widthPixels;
}
public static int getHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
return dm.heightPixels;
}
public static void backgroundAlpha(android.app.Activity a, float bgAlpha) {
WindowManager.LayoutParams lp = a.getWindow().getAttributes();
lp.alpha = bgAlpha; // 0.0-1.0
a.getWindow().setAttributes(lp);
}
/**
* 计算出该TextView中文字的宽度(像素)
*
* @param textView
* @param text
* @return
*/
public static int getTextViewWidth(Context context, TextView textView, String text) {
int px = 0;
try {
TextPaint paint = textView.getPaint();
// 得到使用该paint写上text的时候,像素为多少
float textLength = paint.measureText(text);
px =(int)textLength;// dip2px(context, textLength);
} catch (Exception e) {
e.printStackTrace();
}
return px;
}
}
...@@ -20,6 +20,8 @@ import com.ruiwenliu.wrapper.base.BaseBean; ...@@ -20,6 +20,8 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment; import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.util.LocationManager; import com.ruiwenliu.wrapper.util.LocationManager;
import com.ruiwenliu.wrapper.util.permission.RxPermission; import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView;
import com.rv.camp.adapter.CampListAdapter; import com.rv.camp.adapter.CampListAdapter;
import com.rv.camp.adapter.CampTypeListAdapter; import com.rv.camp.adapter.CampTypeListAdapter;
import com.rv.camp.api.CampApi; import com.rv.camp.api.CampApi;
...@@ -39,7 +41,7 @@ import io.reactivex.functions.Consumer; ...@@ -39,7 +41,7 @@ import io.reactivex.functions.Consumer;
/** /**
* 营地 * 营地
*/ */
public class CampFragment extends BaseFragment<CampPresenter> implements BaseQuickAdapter.RequestLoadMoreListener { public class CampFragment extends BaseFragment<CampPresenter> implements BaseQuickAdapter.RequestLoadMoreListener, SimpleRefreshLayout.OnSimpleRefreshListener {
@BindView(R2.id.rv_content) @BindView(R2.id.rv_content)
RecyclerView rvContent; RecyclerView rvContent;
...@@ -47,6 +49,8 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -47,6 +49,8 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
RecyclerView rvType; RecyclerView rvType;
@BindView(R2.id.v_shadow) @BindView(R2.id.v_shadow)
View vShadow; View vShadow;
@BindView(R2.id.refresh)
SimpleRefreshLayout mSimpleRefreshLayout;
private boolean isOpen = true; private boolean isOpen = true;
private CampListAdapter campAdapter; private CampListAdapter campAdapter;
...@@ -76,6 +80,8 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -76,6 +80,8 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
@Override @Override
protected void initView(Bundle savedInstanceState) { protected void initView(Bundle savedInstanceState) {
mSimpleRefreshLayout.setHeaderView(new SimpleRefreshView(_mActivity));
mSimpleRefreshLayout.setOnSimpleRefreshListener(this);
permissionProcess(); permissionProcess();
campAdapter = new CampListAdapter(); campAdapter = new CampListAdapter();
rvContent.setLayoutManager(new GridLayoutManager(_mActivity, 2)); rvContent.setLayoutManager(new GridLayoutManager(_mActivity, 2));
...@@ -116,7 +122,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -116,7 +122,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
@Override @Override
protected void loadData(Bundle savedInstanceState) { protected void loadData(Bundle savedInstanceState) {
onRefresh(); loadDataList();
getCampTypeList(); getCampTypeList();
} }
...@@ -125,6 +131,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -125,6 +131,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
switch (requestType) { switch (requestType) {
case 0: case 0:
processData((CampListBean) result); processData((CampListBean) result);
mSimpleRefreshLayout.onRefreshComplete();
break; break;
case 1: case 1:
processTypeData((CampTypeBean) result); processTypeData((CampTypeBean) result);
...@@ -196,7 +203,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -196,7 +203,7 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
/** /**
* 刷新数据 * 刷新数据
*/ */
private void onRefresh() { private void loadDataList() {
mPage = 1; mPage = 1;
getCampList(mPage); getCampList(mPage);
} }
...@@ -282,6 +289,11 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui ...@@ -282,6 +289,11 @@ public class CampFragment extends BaseFragment<CampPresenter> implements BaseQui
}); });
} }
@Override
public void onRefresh() {
loadDataList();
}
public class AbSpacesItemDecoration extends RecyclerView.ItemDecoration { public class AbSpacesItemDecoration extends RecyclerView.ItemDecoration {
......
...@@ -49,6 +49,12 @@ ...@@ -49,6 +49,12 @@
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1">
<com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/refresh"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rv_content" android:id="@+id/rv_content"
android:paddingLeft="@dimen/size_12" android:paddingLeft="@dimen/size_12"
...@@ -56,6 +62,7 @@ ...@@ -56,6 +62,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout>
<View <View
android:id="@+id/v_shadow" android:id="@+id/v_shadow"
android:visibility="gone" android:visibility="gone"
......
...@@ -6,12 +6,13 @@ import android.content.Intent; ...@@ -6,12 +6,13 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import com.base.utils.tools.android.IntentUtil; import com.base.utils.tools.android.IntentUtil;
import com.base.utils.ui.image.round.RoundImageView; import com.base.utils.ui.image.round.RoundImageView;
import com.frame.base.browse.ActivityImageBrowseInt; import com.frame.base.browse.ActivityImageBrowseInt;
...@@ -23,10 +24,13 @@ import com.ruiwenliu.wrapper.base.BaseBean; ...@@ -23,10 +24,13 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment; import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.util.UtilsManager; import com.ruiwenliu.wrapper.util.UtilsManager;
import com.ruiwenliu.wrapper.util.glide.GlideManager; import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView;
import com.rv.home.rv.module.ApiConfig; import com.rv.home.rv.module.ApiConfig;
import com.rv.home.rv.module.basic.presenter.CommonPresenter; import com.rv.home.rv.module.basic.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.login.LoginRvActivity; import com.rv.home.rv.module.ui.login.LoginRvActivity;
import com.rv.home.rv.module.ui.main.home.DrivingListActivity; import com.rv.home.rv.module.ui.main.home.DrivingListActivity;
import com.rv.home.rv.module.ui.main.home.bean.BeanHomeBanner;
import com.rv.home.rv.module.ui.main.home.order.OrderListActivity; import com.rv.home.rv.module.ui.main.home.order.OrderListActivity;
import com.rv.member.MemberCenterActivity; import com.rv.member.MemberCenterActivity;
import com.rv.rvmine.bean.UserInfoBean; import com.rv.rvmine.bean.UserInfoBean;
...@@ -43,19 +47,22 @@ import com.yuyife.banner.loader.ImageLoader; ...@@ -43,19 +47,22 @@ import com.yuyife.banner.loader.ImageLoader;
import com.yuyife.okgo.OkGoUtil; import com.yuyife.okgo.OkGoUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.Unbinder;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
/** /**
* 我的 * 我的
*/ */
public class MineFragment extends BaseFragment<CommonPresenter> { public class MineFragment extends BaseFragment<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener{
@BindView(R2.id.iv_avatar) @BindView(R2.id.iv_avatar)
RoundImageView ivAvatar; RoundImageView ivAvatar;
...@@ -95,6 +102,10 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -95,6 +102,10 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
LinearLayout travelFragmentLayout; LinearLayout travelFragmentLayout;
@BindView(R2.id.mine_banner) @BindView(R2.id.mine_banner)
Banner mineBanner; Banner mineBanner;
@BindView(R2.id.refresh)
SimpleRefreshLayout mSimpleRefreshLayout;
Unbinder unbinder;
private UserInfoBean.UserInfo info; private UserInfoBean.UserInfo info;
...@@ -113,8 +124,11 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -113,8 +124,11 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
@Override @Override
protected void initView(Bundle savedInstanceState) { protected void initView(Bundle savedInstanceState) {
mSimpleRefreshLayout.setHeaderView(new SimpleRefreshView(_mActivity));
mSimpleRefreshLayout.setOnSimpleRefreshListener(this);
setBanner(); setBanner();
initRxBus(); initRxBus();
initRefresh();
if (TextUtils.isEmpty(OkGoUtil.getToken())) { if (TextUtils.isEmpty(OkGoUtil.getToken())) {
tvNickname.setVisibility(View.GONE); tvNickname.setVisibility(View.GONE);
...@@ -131,9 +145,14 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -131,9 +145,14 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
} }
} }
private void initRefresh() {
}
@Override @Override
protected void loadData(Bundle savedInstanceState) { protected void loadData(Bundle savedInstanceState) {
getUserData(); getUserData();
loadBannerData();
} }
...@@ -254,20 +273,23 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -254,20 +273,23 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
private List<String> titles = new ArrayList<>(); //图片标题 private List<String> titles = new ArrayList<>(); //图片标题
private List<Integer> localImages = new ArrayList<>(); //图片(本地资源) private List<Integer> localImages = new ArrayList<>(); //图片(本地资源)
private void setBanner() { private void bannerData(BeanHomeBanner data) {
if (data != null) {
titles.clear(); titles.clear();
images.clear(); images.clear();
localImages.clear(); for (int i = 0; i < data.getData().size(); i++) {
images.add(data.getData().get(i).getCover());
localImages.add(R.drawable.abanner);
localImages.add(R.drawable.abanner);
mineBanner.setImages(localImages);
for (int i = 0; i < localImages.size(); i++) {
titles.add(""); titles.add("");
} }
}
setBanner();
}
private void setBanner() {
mineBanner.isAutoPlay(true) mineBanner.isAutoPlay(true)
.setBannerTitles(titles) .setBannerTitles(titles)
.setImages(images)
.setDelayTime(3000) .setDelayTime(3000)
.setImageLoader(new ImageLoader() { .setImageLoader(new ImageLoader() {
@Override @Override
...@@ -292,6 +314,16 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -292,6 +314,16 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
mineBanner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR); mineBanner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR);
} }
/**
* 获取轮播图
*/
private void loadBannerData() {
HashMap<String, String> map = new HashMap<>();
map.put("type", "3");
mPresenter.getData(1, ApiConfig.HTTP_URL_FIND_BANNERLIST, BeanHomeBanner.class, map, false);
}
/** /**
* 获取用户信息请求 * 获取用户信息请求
*/ */
...@@ -321,10 +353,15 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -321,10 +353,15 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
switch (requestType) { switch (requestType) {
case 0: case 0:
userInfoData((UserInfoBean) result); userInfoData((UserInfoBean) result);
mSimpleRefreshLayout.onRefreshComplete();
break;
case 1:
bannerData((BeanHomeBanner) result);
break; break;
} }
} }
private void userInfoData(UserInfoBean infoBean) { private void userInfoData(UserInfoBean infoBean) {
if (infoBean != null) { if (infoBean != null) {
info = infoBean.getData(); info = infoBean.getData();
...@@ -373,4 +410,22 @@ public class MineFragment extends BaseFragment<CommonPresenter> { ...@@ -373,4 +410,22 @@ public class MineFragment extends BaseFragment<CommonPresenter> {
} }
} }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO: inflate a fragment view
View rootView = super.onCreateView(inflater, container, savedInstanceState);
unbinder = ButterKnife.bind(this, rootView);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void onRefresh() {
getUserData();
}
} }
...@@ -85,8 +85,8 @@ public class CollectionListBean extends BaseBean { ...@@ -85,8 +85,8 @@ public class CollectionListBean extends BaseBean {
private String id; private String id;
private int userId; private int userId;
private int type; private int type; //1 租车 2 旅游
private int typeId; private String typeId;
private String name; private String name;
private String cover; private String cover;
private double price; private double price;
...@@ -127,11 +127,11 @@ public class CollectionListBean extends BaseBean { ...@@ -127,11 +127,11 @@ public class CollectionListBean extends BaseBean {
this.type = type; this.type = type;
} }
public int getTypeId() { public String getTypeId() {
return typeId; return typeId;
} }
public void setTypeId(int typeId) { public void setTypeId(String typeId) {
this.typeId = typeId; this.typeId = typeId;
} }
......
package com.rv.rvmine.personal; package com.rv.rvmine.personal;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
...@@ -14,6 +15,7 @@ import android.widget.RelativeLayout; ...@@ -14,6 +15,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.base.utils.ui.datetime.selector.util.TextUtil;
import com.frame.base.bus.RxBus; import com.frame.base.bus.RxBus;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
...@@ -174,6 +176,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -174,6 +176,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
return; return;
} }
if (requestCode == mPresenter.TYPE_CAMERA_CODE) { if (requestCode == mPresenter.TYPE_CAMERA_CODE) {
if (!TextUtil.isEmpty(mPresenter.gerCameraStoreUrl())) {
if (cardType == 0){ if (cardType == 0){
llCard.setVisibility(View.GONE); llCard.setVisibility(View.GONE);
}else { }else {
...@@ -183,6 +186,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -183,6 +186,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
GlideManager.getInstance(mActivity).loadImage(url, cardType == 0 ? ivCard : ivCardCopy); GlideManager.getInstance(mActivity).loadImage(url, cardType == 0 ? ivCard : ivCardCopy);
uploadFile(new File(mPresenter.gerCameraStoreUrl()), "camera"); uploadFile(new File(mPresenter.gerCameraStoreUrl()), "camera");
} }
}
} }
...@@ -224,6 +228,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -224,6 +228,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
* *
* @param type 1、相机2、相册 * @param type 1、相机2、相册
*/ */
@SuppressLint("CheckResult")
private void processPicker(final int type) { private void processPicker(final int type) {
/** /**
* 6.0以上手机做权限处理 * 6.0以上手机做权限处理
......
...@@ -67,13 +67,17 @@ public class CollectionActivity extends BaseStatusActivity<CommonPresenter> impl ...@@ -67,13 +67,17 @@ public class CollectionActivity extends BaseStatusActivity<CommonPresenter> impl
@Override @Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) { public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
CollectionListBean.DataBeanX.DataBean dataBean = (CollectionListBean.DataBeanX.DataBean) adapter.getItem(position); CollectionListBean.DataBeanX.DataBean dataBean = (CollectionListBean.DataBeanX.DataBean) adapter.getItem(position);
if ( 2 == dataBean.getType()) {
ARouter.getInstance() ARouter.getInstance()
.build(Constance.ACTIVITY_URL_TRAVELDETAILS) .build(Constance.ACTIVITY_URL_TRAVELDETAILS)
.withString("id", dataBean.getId()) .withString("id", dataBean.getTypeId())
.withString("name",dataBean.getName()) .withString("name", dataBean.getName())
.withString("content",dataBean.getUnit()) .withString("content", dataBean.getUnit())
.withString("url",dataBean.getCover()) .withString("url", dataBean.getCover())
.navigation(); .navigation();
}else if (1 == dataBean.getType()){
}
} }
}); });
} }
......
...@@ -103,6 +103,7 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen ...@@ -103,6 +103,7 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen
GlideManager.getInstance(mActivity).loadImage(info.getHeadimgurl(), ivAvatar); GlideManager.getInstance(mActivity).loadImage(info.getHeadimgurl(), ivAvatar);
if (info.getNickname() != null) { if (info.getNickname() != null) {
etNickname.setText(info.getNickname()); etNickname.setText(info.getNickname());
etNickname.setSelection(info.getNickname().length());
} }
if (info.getRealname() != null) { if (info.getRealname() != null) {
etName.setText(info.getRealname()); etName.setText(info.getRealname());
......
...@@ -23,10 +23,11 @@ ...@@ -23,10 +23,11 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/size_50"
android:layout_marginLeft="@dimen/size_15"
android:orientation="horizontal" android:layout_marginRight="@dimen/size_15"
android:padding="@dimen/size_15"> android:gravity="center_vertical"
android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -37,8 +38,8 @@ ...@@ -37,8 +38,8 @@
<EditText <EditText
android:id="@+id/et_name" android:id="@+id/et_name"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:background="@null" android:background="@null"
android:hint="@string/tv_name_hint" android:hint="@string/tv_name_hint"
android:maxLength="10" android:maxLength="10"
...@@ -99,10 +100,12 @@ ...@@ -99,10 +100,12 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/size_50"
android:background="@color/colorWrite" android:background="@color/colorWrite"
android:orientation="horizontal" android:layout_marginLeft="@dimen/size_15"
android:padding="@dimen/size_15"> android:layout_marginRight="@dimen/size_15"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/refresh"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout <LinearLayout
android:id="@+id/travel_fragment_layout" android:id="@+id/travel_fragment_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -503,4 +514,6 @@ ...@@ -503,4 +514,6 @@
</LinearLayout> </LinearLayout>
</ScrollView>
</com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_50" android:layout_height="@dimen/size_50"
android:visibility="gone"
android:gravity="center_vertical"> android:gravity="center_vertical">
<TextView <TextView
...@@ -208,6 +209,7 @@ ...@@ -208,6 +209,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_50" android:layout_height="@dimen/size_50"
android:visibility="gone"
android:gravity="center_vertical"> android:gravity="center_vertical">
<TextView <TextView
......
...@@ -42,4 +42,5 @@ dependencies { ...@@ -42,4 +42,5 @@ dependencies {
api project(':component_dialog') api project(':component_dialog')
api project(':plugin_search') api project(':plugin_search')
api project(':RvWrapper') api project(':RvWrapper')
api project(':component_control')
} }
...@@ -15,6 +15,7 @@ import android.widget.ImageView; ...@@ -15,6 +15,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation; import com.baidu.location.BDLocation;
...@@ -34,6 +35,8 @@ import com.ruiwenliu.wrapper.base.BaseFragment; ...@@ -34,6 +35,8 @@ import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.util.LocationManager; import com.ruiwenliu.wrapper.util.LocationManager;
import com.ruiwenliu.wrapper.util.glide.GlideManager; import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.ruiwenliu.wrapper.util.permission.RxPermission; import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView;
import com.rv.tourism.adapter.AllPopularAdapter; import com.rv.tourism.adapter.AllPopularAdapter;
import com.rv.tourism.adapter.PopularBrigadeAdapter; import com.rv.tourism.adapter.PopularBrigadeAdapter;
import com.rv.tourism.adapter.TourAroundAdapter; import com.rv.tourism.adapter.TourAroundAdapter;
...@@ -61,7 +64,8 @@ import io.reactivex.functions.Consumer; ...@@ -61,7 +64,8 @@ import io.reactivex.functions.Consumer;
/** /**
* 旅游 * 旅游
*/ */
public class TourismFragment extends BaseFragment<TourismPresenter> implements BaseQuickAdapter.RequestLoadMoreListener {
public class TourismFragment extends BaseFragment<TourismPresenter> implements BaseQuickAdapter.RequestLoadMoreListener, SimpleRefreshLayout.OnSimpleRefreshListener {
@BindView(R2.id.travel_city_text) @BindView(R2.id.travel_city_text)
TextView travelCityText; TextView travelCityText;
...@@ -79,6 +83,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B ...@@ -79,6 +83,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B
ImageView travelHotMoreClose; ImageView travelHotMoreClose;
@BindView(R2.id.ll_layout_popular_more) @BindView(R2.id.ll_layout_popular_more)
LinearLayout llLayoutPopularMore; LinearLayout llLayoutPopularMore;
@BindView(R2.id.refresh)
SimpleRefreshLayout mSimpleRefreshLayout;
private ArrayList<String> images = new ArrayList<>(); //图片(默认采用网络地址) private ArrayList<String> images = new ArrayList<>(); //图片(默认采用网络地址)
...@@ -113,6 +119,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B ...@@ -113,6 +119,8 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B
@Override @Override
protected void initView(Bundle savedInstanceState) { protected void initView(Bundle savedInstanceState) {
mSimpleRefreshLayout.setHeaderView(new SimpleRefreshView(_mActivity));
mSimpleRefreshLayout.setOnSimpleRefreshListener(this);
setBanner(); setBanner();
permissionProcess(); permissionProcess();
//热门游 //热门游
...@@ -257,6 +265,7 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B ...@@ -257,6 +265,7 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B
@Override @Override
public void onShowResult(int requestType, BaseBean result) { public void onShowResult(int requestType, BaseBean result) {
mSimpleRefreshLayout.onRefreshComplete();
switch (requestType) { switch (requestType) {
case 0: case 0:
bannerData((BeanTourismBanner) result); bannerData((BeanTourismBanner) result);
...@@ -390,6 +399,13 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B ...@@ -390,6 +399,13 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements B
} }
} }
@Override
public void onRefresh() {
loadPopularBrigadeData();
loadTourAroundData();
loadPopularBrigadeAllData();
}
public class AbSpacesItemDecoration extends RecyclerView.ItemDecoration { public class AbSpacesItemDecoration extends RecyclerView.ItemDecoration {
......
...@@ -8,7 +8,7 @@ public interface TourismApi extends RvFrameConfig { ...@@ -8,7 +8,7 @@ public interface TourismApi extends RvFrameConfig {
//查询公司详情 直接 在url上 +/ +参数 get //查询公司详情 直接 在url上 +/ +参数 get
String QUERY_COMPANY_DETAIL = HOST + "/vehicle/branchCompany/app/unauth/detail/"; String QUERY_COMPANY_DETAIL = HOST + "/vehicle/branchCompany/app/unauth/detail/";
//查询Banner get //查询Banner get
String QUERY_BANNER_MAIN = HOST + "/api/tour/tourBanner/app/unauth/findBannerlist"; String QUERY_BANNER_MAIN = HOST + "/api/app/banner/app/unauth/findBannerlist";
String QUERY_BANNER_HOT = HOST + "/api/tour/tourTagBanner/app/unauth/findByType/"; String QUERY_BANNER_HOT = HOST + "/api/tour/tourTagBanner/app/unauth/findByType/";
//周边游、推荐路线 get 需要传query关键字,没有关键字就"" //周边游、推荐路线 get 需要传query关键字,没有关键字就""
String QUERY_RIM_LIST = HOST + "/api/tour/tourGood/app/unauth/getGoodList"; String QUERY_RIM_LIST = HOST + "/api/tour/tourGood/app/unauth/getGoodList";
...@@ -28,5 +28,9 @@ public interface TourismApi extends RvFrameConfig { ...@@ -28,5 +28,9 @@ public interface TourismApi extends RvFrameConfig {
String COMMIT_COLLECT_IS = HOST + "/api/admin/app/user/collect"; String COMMIT_COLLECT_IS = HOST + "/api/admin/app/user/collect";
//取消收藏 //取消收藏
String COMMIT_COLLECT_REMOVE = HOST + "/api/admin/app/user/collect/remove"; String COMMIT_COLLECT_REMOVE = HOST + "/api/admin/app/user/collect/remove";
//确认订单查询其它信息
String COMMIT_COLLECT_ORDERUNITPRICE = HOST + "/api/order/baseOrder/app/unauth/getOrderUnitPrice";
public static String HTTP_URL_CAR_TYPE_NOTICE = HOST + "/h5/appHtml/view/notice.html";//预定须知
} }
package com.rv.tourism.bean;
import com.ruiwenliu.wrapper.base.BaseBean;
import java.io.Serializable;
import java.util.List;
public class BeanConfirmOrder extends BaseBean {
private DataBean data;
private int code;
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public static class DataBean implements Serializable {
private double insurePrice;
public double getInsurePrice() {
return insurePrice;
}
public void setInsurePrice(double insurePrice) {
this.insurePrice = insurePrice;
}
}
}
...@@ -6,6 +6,7 @@ import android.content.res.Configuration; ...@@ -6,6 +6,7 @@ import android.content.res.Configuration;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.View; import android.view.View;
import android.webkit.JavascriptInterface; import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient; import android.webkit.WebChromeClient;
...@@ -272,7 +273,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -272,7 +273,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
/** /**
* 初始化分享 * 初始化分享
*/ */
private void initShare(final String url, final String name, final String content, final String logo) { private void initShare(final String webUrl, final String name, final String content, final String logo) {
shareManager = new ShareManager(this, new ShareBoardlistener() { shareManager = new ShareManager(this, new ShareBoardlistener() {
@Override @Override
...@@ -283,7 +284,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -283,7 +284,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
} else if (snsPlatform.mShowWord.equals("复制链接")) { } else if (snsPlatform.mShowWord.equals("复制链接")) {
// copyText(); // copyText();
} }
shareManager.showShare(share_media, url, name, content, logo shareManager.showShare(share_media, webUrl, name, content, logo
, new CustomShareListener(mActivity) { , new CustomShareListener(mActivity) {
@Override @Override
...@@ -371,8 +372,15 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -371,8 +372,15 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
beanOrderParam = new Gson().fromJson(orderJson, beanOrderParam = new Gson().fromJson(orderJson,
new TypeToken<BeanOrderParam>() { new TypeToken<BeanOrderParam>() {
}.getType()); }.getType());
if (Integer.valueOf(beanOrderParam.getAdultNum()) < Integer.valueOf(beanOrderParam.getChildNum())){
showToast("儿童数要大于或等于成人数");
}else if (Integer.valueOf(beanOrderParam.getAdultNum()) ==0){
showToast("成人数不能为空!");
}else {
startActivity(TravelerConfirmOrderActivity.getIntent(mActivity, beanOrderParam)); startActivity(TravelerConfirmOrderActivity.getIntent(mActivity, beanOrderParam));
} }
}
} }
} }
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/colorLine" android:background="@color/colorLine"
...@@ -323,12 +324,12 @@ ...@@ -323,12 +324,12 @@
android:textColor="@color/textGray" /> android:textColor="@color/textGray" />
<TextView <TextView
android:visibility="gone"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="请选择出游人" android:text="请选择出游人"
android:textColor="@color/text_Gray" android:textColor="@color/text_Gray"
android:textSize="@dimen/text_14" /> android:textSize="@dimen/text_14"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
<include layout="@layout/common_line" /> <include layout="@layout/common_line" />
...@@ -357,21 +358,34 @@ ...@@ -357,21 +358,34 @@
android:textColor="@color/colorMain" android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" /> android:textSize="@dimen/text_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_10"
android:textSize="@dimen/text_14"
android:text="保险 每天"/>
<TextView <TextView
android:id="@+id/tv_insurance_information" android:id="@+id/tv_insurance_information"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_10"
android:layout_weight="1" android:layout_weight="1"
android:text="保险 每天¥5/人" /> android:textSize="@dimen/text_14"
android:textColor="@color/colorAuxiliaryRed"
android:text="¥5/人" />
<com.suke.widget.SwitchButton <com.rv.component.control.SwitchButton
android:id="@+id/btn_insurance" android:id="@+id/swbtn_insurance"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:sb_button_color="@color/colorWrite"
app:sb_checked_color="@color/gray_FFB74B"
app:sb_show_indicator="false"
app:sb_uncheckcircle_color="@color/textLightGrey" />
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/rl_item_notice"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_50" android:layout_height="@dimen/size_50"
android:layout_marginTop="@dimen/size_15" android:layout_marginTop="@dimen/size_15"
...@@ -432,59 +446,60 @@ ...@@ -432,59 +446,60 @@
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/size_15"
android:layout_weight="2" android:layout_weight="2"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_marginLeft="@dimen/size_15"
android:layout_height="match_parent"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="@dimen/text_16" android:text="支付金额:"
android:textColor="@color/colorMain" android:textColor="@color/colorMain"
android:text="支付金额:"/> android:textSize="@dimen/text_16" />
<TextView <TextView
android:id="@+id/tv_payment_amount" android:id="@+id/tv_payment_amount"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="@dimen/text_16" android:layout_weight="1"
android:text="¥3550.00"
android:textColor="@color/colorAuxiliaryRed" android:textColor="@color/colorAuxiliaryRed"
android:text="¥3550.00"/> android:textSize="@dimen/text_16" />
<View <View
android:layout_width="@dimen/size_1" android:layout_width="@dimen/size_1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="@dimen/size_15" android:layout_marginTop="@dimen/size_15"
android:layout_marginBottom="@dimen/size_15" android:layout_marginBottom="@dimen/size_15"
android:background="@color/colorLine"/> android:background="@color/colorLine" />
<TextView <TextView
android:id="@+id/tv_detail" android:id="@+id/tv_detail"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_16"
android:gravity="center" android:gravity="center"
android:paddingLeft="@dimen/size_15" android:paddingLeft="@dimen/size_15"
android:paddingRight="@dimen/size_15" android:paddingRight="@dimen/size_15"
android:text="明细"/> android:text="明细"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_16" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:id="@+id/tv_confirm_order" android:id="@+id/tv_confirm_order"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/colorYellow" android:background="@color/colorYellow"
android:textSize="@dimen/text_16"
android:gravity="center" android:gravity="center"
android:text="确认订单"
android:textColor="@color/colorWrite" android:textColor="@color/colorWrite"
android:text="确认订单"/> android:textSize="@dimen/text_16" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -94,6 +94,12 @@ ...@@ -94,6 +94,12 @@
android:src="@drawable/common_journey_service_gray" /> android:src="@drawable/common_journey_service_gray" />
</LinearLayout> </LinearLayout>
<com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/refresh"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView <android.support.v4.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
...@@ -176,6 +182,8 @@ ...@@ -176,6 +182,8 @@
</LinearLayout> </LinearLayout>
</android.support.v4.widget.NestedScrollView> </android.support.v4.widget.NestedScrollView>
</com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
android:background="@drawable/ui_selector_radius_common_dark" android:background="@drawable/ui_selector_radius_common_dark"
android:paddingLeft="@dimen/size_5" android:paddingLeft="@dimen/size_5"
android:paddingTop="@dimen/size_3" android:paddingTop="@dimen/size_3"
android:visibility="invisible"
android:paddingRight="@dimen/size_5" android:paddingRight="@dimen/size_5"
android:paddingBottom="@dimen/size_3" android:paddingBottom="@dimen/size_3"
android:text="东莞出发" android:text="东莞出发"
......
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
api 'com.jakewharton:butterknife:9.0.0-rc1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc1'
annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'
api project(':RvWrapper')
api project(':component_resource')
api project(':component_utils')
}
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rv.plugin.calendar">
<application>
<activity android:name=".CalendarActivity"></activity>
</application>
</manifest>
package com.rv.plugin.calendar;
import android.app.Activity;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import com.rv.plugin.calendar.listener.OnDismissListener;
public class BasePickerView
{
private final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
private Context context;
protected ViewGroup contentContainer;
private ViewGroup decorView;// activity的根View
private ViewGroup rootView;// 附加View 的 根View
private OnDismissListener onDismissListener;
private boolean isDismissing;
private Animation outAnim;
private Animation inAnim;
private int gravity = Gravity.BOTTOM;
public BasePickerView(Context context)
{
this.context = context;
initViews();
init();
initEvents();
}
protected void initViews()
{
LayoutInflater layoutInflater = LayoutInflater.from(context);
decorView = (ViewGroup) ((Activity) context).getWindow().getDecorView().findViewById(android.R.id.content);
rootView = (ViewGroup) layoutInflater.inflate(R.layout.layout_basepickerview, decorView, false);
rootView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
contentContainer = (ViewGroup) rootView.findViewById(R.id.content_container);
contentContainer.setLayoutParams(params);
}
protected void init()
{
inAnim = getInAnimation();
outAnim = getOutAnimation();
}
protected void initEvents()
{
}
/**
* show的时候调用
*
* @param view
* 这个View
*/
private void onAttached(View view)
{
decorView.addView(view);
contentContainer.startAnimation(inAnim);
}
/**
* 添加这个View到Activity的根视图
*/
public void show()
{
if (isShowing())
{
return;
}
onAttached(rootView);
}
/**
* 检测该View是不是已经添加到根视图
*
* @return 如果视图已经存在该View返回true
*/
public boolean isShowing()
{
View view = decorView.findViewById(R.id.outmost_container);
return view != null;
}
public void dismiss()
{
if (isDismissing)
{
return;
}
// 消失动画
outAnim.setAnimationListener(new Animation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation)
{
}
@Override
public void onAnimationEnd(Animation animation)
{
decorView.post(new Runnable()
{
@Override
public void run()
{
// 从activity根视图移除
decorView.removeView(rootView);
isDismissing = false;
if (onDismissListener != null)
{
onDismissListener.onDismiss(BasePickerView.this);
}
}
});
}
@Override
public void onAnimationRepeat(Animation animation)
{
}
});
contentContainer.startAnimation(outAnim);
isDismissing = true;
}
public Animation getInAnimation()
{
int res = PickerViewAnimateUtil.getAnimationResource(this.gravity, true);
return AnimationUtils.loadAnimation(context, res);
}
public Animation getOutAnimation()
{
int res = PickerViewAnimateUtil.getAnimationResource(this.gravity, false);
return AnimationUtils.loadAnimation(context, res);
}
public BasePickerView setOnDismissListener(OnDismissListener onDismissListener)
{
this.onDismissListener = onDismissListener;
return this;
}
public BasePickerView setCancelable(boolean isCancelable)
{
View view = rootView.findViewById(R.id.outmost_container);
if (isCancelable)
{
view.setOnTouchListener(onCancelableTouchListener);
} else
{
view.setOnTouchListener(null);
}
return this;
}
/**
* Called when the user touch on black overlay in order to dismiss the
* dialog
*/
private final View.OnTouchListener onCancelableTouchListener = new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
dismiss();
}
return false;
}
};
public View findViewById(int id)
{
return contentContainer.findViewById(id);
}
}
package com.rv.plugin.calendar;
import com.rv.plugin.calendar.bean.DateInfo;
import com.rv.plugin.calendar.bean.Lunar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarDateUtil {
/** yyyy-MM-dd HH:mm:ss */
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/** yyyy-MM-dd */
private static SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
/** yyyy */
private static SimpleDateFormat sd1 = new SimpleDateFormat("yyyy");
/** MM */
private static SimpleDateFormat sd2 = new SimpleDateFormat("MM");
/** dd */
private static SimpleDateFormat sd3 = new SimpleDateFormat("dd");
/** yyyy-MM */
private static SimpleDateFormat sd4 = new SimpleDateFormat("yyyy-MM");
/** yyyy年MM月 */
private static SimpleDateFormat sd5 = new SimpleDateFormat("yyyy年MM月");
/**
* yyyy-MM-dd HH:mm:ss
* @param str
* @return
*/
public static String timestampToString(long str) {
return sdf.format(new Date(str));
}
/**
* yyyy-MM-dd HH:mm:ss
* @return
*/
public static String getCurDateTime() {
String time = "";
time = timestampToString(System.currentTimeMillis());
return time;
}
/**
* yyyy-MM-dd
* @return
*/
public static String getCurDate() {
String time = "";
time = sdf2.format(new Date(System.currentTimeMillis()));
return time;
}
/**
* 格式化stirng
* @return
*/
public static String getCurstring(Date date) {
String time = "";
time = sdf2.format(date);
return time;
}
/**
* 格式化Date
*
* @param date
* @return yyyy-MM-dd
*/
public static Date formatDate2(String date) {
Date tdate=null;
try {
tdate = sdf2.parse(date);
} catch (Exception e) {
e.printStackTrace();
}
return tdate;
}
/**
* 将YYYY-MM-DD转换成YYY年MM月
* @param time
* @return
*/
public static String StringToDate5(String time) {
String dateStr="";
try {
Date date = sdf2.parse(time);
dateStr=sd5.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return dateStr;
}
/**
*
* 在当前时间上添加多少年、月、日
* @param date
* yyyy-MM-dd
* @param addType
* Calendar.YEAR 、 Calendar.MONTH 、 Calendar.DATE
* @param addNum
* @return yyyy-MM-dd
*/
public static String addDate(String date, int addType, int addNum) {
String time = "";
try {
Date temp_date = sdf2.parse(date);
Date temp_date2 = addDate(temp_date, addType, addNum);
time = sdf2.format(temp_date2);
} catch (Exception e) {
e.printStackTrace();
}
return time;
}
/**
*
* 在当前时间上添加多少年、月、日
* @param date
* yyyy-MM-dd
* @param addType
* Calendar.YEAR 、 Calendar.MONTH 、 Calendar.DATE
* @param addNum
* @return yyyy-MM-dd
*/
public static Date addDate3(String date, int addType, int addNum) {
Date tempDate = null;
try {
Date temp_date = sdf2.parse(date);
tempDate = addDate(temp_date, addType, addNum);
} catch (Exception e) {
e.printStackTrace();
}
return tempDate;
}
/**
* 在当前时间上添加多少年、月、日
*
* @param date
* yyyy-MM-dd
* @param addType
* Calendar.YEAR 、 Calendar.MONTH 、 Calendar.DATE
* @param addNum
* @return yyyy-MM-dd
*/
public static Date addDate(Date date, int addType, int addNum) {
Date tempDate = null;
try {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(addType, addNum);
tempDate = cal.getTime();
} catch (Exception e) {
e.printStackTrace();
}
return tempDate;
}
/**
* 在指定时间上添加多少年、月
*
* @param date yyyy年MM月
* @param addType Calendar.YEAR 、 Calendar.MONTH
* @param addNum
* @return yyyy-MM
*/
public static String addDate2(String date, int addType, int addNum) {
String time = "";
try {
Date temp_date = sd5.parse(date);
Date temp_date2 = addDate(temp_date, addType, addNum);
time = sd5.format(temp_date2);
} catch (Exception e) {
e.printStackTrace();
}
return time;
}
/**
* 比较两个时间相差多少天 datetime1-datetime2
*
* @param datetime1
* @param datetime2
* @return 失败返回-1 ,所以尽量是datetime1大于datetime2
*/
public static long compareDateDay(String datetime1, String datetime2) {
try {
Date date1 = sdf2.parse(datetime1);
Date date2 = sdf2.parse(datetime2);
return compareDateDay(date1.getTime(), date2.getTime());
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 比较两个时间相差多少天 datetime1-datetime2
*
* @param datetime1
* @param datetime2
* @return 失败返回-1 ,所以尽量是datetime1大于datetime2
*/
public static long compareDateDay(long datetime1, long datetime2) {
long diff = -1;
try {
long diffTime = datetime1 - datetime2;
diff = diffTime / (1000 * 60 * 60 * 24);
} catch (Exception e) {
e.printStackTrace();
}
return diff;
}
/**
* 获取年yyyy
* @param date
* @return
*/
public static String formatYear(Date date) {
String yyyy = sd1.format(date);
return yyyy;
}
/**
* 获取月MM
* @param date
* @return
*/
public static String formatMonth(Date date) {
String mm = sd2.format(date);
return mm;
}
/**
* 获取日day
* @param date
* @return
*/
public static String formatDay(Date date) {
String dd = sd3.format(date);
return dd;
}
/**
* 获取年月YYYY-MM
* @param date
* @return
*/
public static String formatYearMonth(Date date) {
String dd = sd4.format(date);
return dd;
}
/**
* 获取对应的农历(如果是阳历或农历节日就优先显示节日)
* @param curDate 当前日期 yyyy-MM-dd
* @return
*/
public static DateInfo getLunar(String curDate){
DateInfo info=new DateInfo();
Date date=formatDate2(curDate);
Lunar lunar=new Lunar(date);
info.setNongliDate(lunar.getLunarDayString());
if (lunar.isSFestival()) {
//阳历节日
info.setDisplayNongliDate(lunar.getSFestivalName());
info.setHoliday(true);
} else {
if (lunar.isLFestival() && lunar.getLunarMonthString().substring(0, 1).equals("闰") == false) {
//农历节日
info.setDisplayNongliDate(lunar.getLFestivalName());
info.setHoliday(true);
} else {
String solarTerm=lunar.getTermString();
if(!solarTerm.equals("")&&solarTerm.equals("清明")){
//24节气
info.setDisplayNongliDate("清明");
info.setHoliday(true);
}else{
if (lunar.getLunarDayString().equals("初一")) {
info.setDisplayNongliDate(lunar.getLunarMonthString() + "月");
} else {
info.setDisplayNongliDate(lunar.getLunarDayString());
}
info.setHoliday(false);
}
}
}
return info;
}
/**
* 获取当月有多少周
* @param dateStr
* @return
*/
public static int weekCount(String dateStr){
int flag=0;
Calendar calendar = Calendar.getInstance();
try{
Date date=sd5.parse(dateStr);
calendar.setTime(date);
flag=calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
}catch (Exception e){
e.printStackTrace();
}
return flag;
}
}
package com.rv.plugin.calendar;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.rv.plugin.calendar.adapter.CalendarAdapter2;
import com.rv.plugin.calendar.bean.DateInfo;
import java.util.Calendar;
import java.util.List;
/**
* 日历
*/
public class CalendarView2 extends FrameLayout {
private RecyclerView rvListview;
private Context mContext;
private List<DateInfo> listDayInfo;
public int selectInPosition; //选中的入住日期
public int selectOutPosition;
public int commmon; //中间变量
private OnDayClickListener mDayClickListener;
private LinearLayout llTopMonth, llNextMonth;
private GridLayoutManager gridLayoutManager;
private TextView tvTopMonthTitle, tvNextMonthTitle;
public CalendarView2(Context context) {
super(context);
}
public CalendarView2(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
View view = LayoutInflater.from(mContext).inflate(R.layout.v_calendarview, null);
rvListview = (RecyclerView) view.findViewById(R.id.rv_listview);
LinearLayout llTitleBox = (LinearLayout) view.findViewById(R.id.ll_title_Box);
// llTopMonth = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.item_calendar_header, null);
// llNextMonth = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.item_calendar_header, null);
// tvTopMonthTitle = (TextView) llTopMonth.findViewById(R.id.tv_monthTitle);
// tvNextMonthTitle = (TextView) llNextMonth.findViewById(R.id.tv_monthTitle);
// llTitleBox.setAlpha(0.8f);
// llTitleBox.addView(llTopMonth);
// llTitleBox.addView(llNextMonth);
llTitleBox.setVisibility(GONE);
this.addView(view);
}
/**
* 设置日历
*
* @param listDay
*/
public void setData(List<DateInfo> listDay) {
if (listDay == null || listDay.size() == 0) {
return;
}
this.listDayInfo = listDay;
final CalendarAdapter2 adapter = new CalendarAdapter2(mContext, listDayInfo);
adapter.setOnItemClickListener(new CalendarAdapter2.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
if (listDayInfo.get(position).isCanBeChoose()) {
DateInfo dateInfo = listDayInfo.get(position);
if (selectInPosition == 0 && adapter.inPosition != 0) {
listDayInfo.get(adapter.inPosition).setBeginDay(false);
}
if (selectOutPosition == 0 && adapter.outPosition != 0) {
listDayInfo.get(adapter.outPosition).setEndDay(false);
}
if (selectInPosition !=0 &&selectOutPosition !=0 && adapter.inPosition != 0 &&adapter.outPosition != 0){
listDayInfo.get(adapter.inPosition).setBeginDay(false);
listDayInfo.get(adapter.outPosition).setEndDay(false);
selectInPosition = 0;
selectOutPosition = 0;
}
if (selectInPosition == 0) {
selectInPosition = position;
adapter.inPosition = position;
dateInfo.setBeginDay(true);
adapter.notifyDataSetChanged();
mDayClickListener.inClick(dateInfo);
} else {
if (position < selectInPosition) {
listDayInfo.get(selectInPosition).setBeginDay(false);
commmon =selectInPosition;
selectInPosition = position;
adapter.inPosition = position;
dateInfo.setBeginDay(true);
adapter.notifyDataSetChanged();
mDayClickListener.inClick(dateInfo);
selectOutPosition = commmon;
adapter.outPosition = commmon;
listDayInfo.get(commmon).setEndDay(true);
mDayClickListener.outClick(listDayInfo.get(commmon));
} else {
selectOutPosition = position;
adapter.outPosition = position;
dateInfo.setEndDay(true);
adapter.notifyDataSetChanged();
mDayClickListener.outClick(dateInfo);
}
}
}
}
});
gridLayoutManager = new GridLayoutManager(mContext, 7);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (listDayInfo.get(position).getTypeDay() == DateInfo.VIEW_TYPE_MONTH_TITLE) {
return 7;
} else {
return 1;
}
}
});
rvListview.setLayoutManager(gridLayoutManager);
rvListview.setAdapter(adapter);
//rvListview.addOnScrollListener(new ScrollListenerAnim());
gridLayoutManager.scrollToPosition(0);
}
public void setOnDayClickListener(OnDayClickListener listener) {
mDayClickListener = listener;
}
/**
* 点击当前日期
*/
public interface OnDayClickListener {
//入住时间
void inClick(DateInfo date);
//离店时间
void outClick(DateInfo date);
}
private boolean mIsFirst = true;
private float mTopMonthViewPosition1;
private float mTopMonthViewPosition2;
private float mTopMonthViewPosition3;
/**
* 在此实现了顶部标题动画切换效果
*/
public class ScrollListenerAnim extends RecyclerView.OnScrollListener {
//上一次可见位置
private int lastFirstVisiblePosition = -1;
/*
* 上一次滑动方向
* 0上滑
* 1下滑
*/
private int lastScrollDirection = 1;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int curVisiblePosition = gridLayoutManager.findFirstVisibleItemPosition();
// 第一行非月份标题不进行动画
if (listDayInfo.get(curVisiblePosition).getTypeDay() != DateInfo.VIEW_TYPE_MONTH_TITLE) {
return;
}
// 滑动方向未变并且第一可见行未变不进行动画
if (dy < 0 && lastScrollDirection == 0 && lastFirstVisiblePosition == curVisiblePosition) {
return;
} else if (dy > 0 && lastScrollDirection == 1 && lastFirstVisiblePosition == curVisiblePosition) {
return;
}
String topMonth = listDayInfo.get(curVisiblePosition).getMonth();
String nextMoth = CalendarDateUtil.addDate2(topMonth, Calendar.MONTH, 1);
if (dy < 0) {
lastScrollDirection = 0;
topMonth = CalendarDateUtil.addDate2(topMonth, Calendar.MONTH, -1);
} else if (dy > 0) {
lastScrollDirection = 1;
}
lastFirstVisiblePosition = curVisiblePosition;
tvTopMonthTitle.setText(topMonth);
tvNextMonthTitle.setText(nextMoth);
if (dy < 0) {
// 上滑
startTopMonthAnim(true);
} else if (dy > 0) {
// 下滑
startTopMonthAnim(false);
}
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
}
/**
* 顶部标题动画切换效果
*
* @param isUP
*/
private void startTopMonthAnim(boolean isUP) {
long duration = 200;
if (mIsFirst) {
mTopMonthViewPosition2 = llTopMonth.getY(); //0
mTopMonthViewPosition3 = llNextMonth.getY(); //180
mTopMonthViewPosition1 = mTopMonthViewPosition2 - (mTopMonthViewPosition3 - mTopMonthViewPosition2); //-180
mIsFirst = false;
}
// 上滑
if (isUP) {
ObjectAnimator anim1 = ObjectAnimator.ofFloat(llTopMonth, "y", mTopMonthViewPosition1, mTopMonthViewPosition2).setDuration(duration);
anim1.setInterpolator(new AccelerateDecelerateInterpolator());
anim1.start();
ObjectAnimator anim2 = ObjectAnimator.ofFloat(llNextMonth, "y", mTopMonthViewPosition2, mTopMonthViewPosition3).setDuration(duration);
anim2.setInterpolator(new AccelerateDecelerateInterpolator());
anim2.start();
}
// 下滑
else {
ObjectAnimator anim1 = ObjectAnimator.ofFloat(llTopMonth, "y", mTopMonthViewPosition2, mTopMonthViewPosition1).setDuration(duration);
anim1.setInterpolator(new AccelerateDecelerateInterpolator());
anim1.start();
ObjectAnimator anim2 = ObjectAnimator.ofFloat(llNextMonth, "y", mTopMonthViewPosition3, mTopMonthViewPosition2).setDuration(duration);
anim2.setInterpolator(new AccelerateDecelerateInterpolator());
anim2.start();
}
}
}
package com.rv.plugin.calendar;
import java.util.TimerTask;
final class InertiaTimerTask extends TimerTask
{
float a;
final float velocityY;
final WheelView loopView;
InertiaTimerTask(WheelView loopview, float velocityY)
{
super();
loopView = loopview;
this.velocityY = velocityY;
a = Integer.MAX_VALUE;
}
@Override
public final void run()
{
if (a == Integer.MAX_VALUE)
{
if (Math.abs(velocityY) > 2000F)
{
if (velocityY > 0.0F)
{
a = 2000F;
} else
{
a = -2000F;
}
} else
{
a = velocityY;
}
}
if (Math.abs(a) >= 0.0F && Math.abs(a) <= 20F)
{
loopView.cancelFuture();
loopView.handler.sendEmptyMessage(MessageHandler.WHAT_SMOOTH_SCROLL);
return;
}
int i = (int) ((a * 10F) / 1000F);
loopView.totalScrollY = loopView.totalScrollY - i;
if (!loopView.isLoop)
{
float itemHeight = loopView.itemHeight;
float top = (-loopView.initPosition) * itemHeight;
float bottom = (loopView.getItemsCount() - 1 - loopView.initPosition) * itemHeight;
if (loopView.totalScrollY - itemHeight * 0.3 < top)
{
top = loopView.totalScrollY + i;
} else if (loopView.totalScrollY + itemHeight * 0.3 > bottom)
{
bottom = loopView.totalScrollY + i;
}
if (loopView.totalScrollY <= top)
{
a = 40F;
loopView.totalScrollY = (int) top;
} else if (loopView.totalScrollY >= bottom)
{
loopView.totalScrollY = (int) bottom;
a = -40F;
}
}
if (a < 0.0F)
{
a = a + 20F;
} else
{
a = a - 20F;
}
loopView.handler.sendEmptyMessage(MessageHandler.WHAT_INVALIDATE_LOOP_VIEW);
}
}
package com.rv.plugin.calendar;
import android.os.Handler;
import android.os.Message;
final class MessageHandler extends Handler {
public static final int WHAT_INVALIDATE_LOOP_VIEW = 1000;
public static final int WHAT_SMOOTH_SCROLL = 2000;
public static final int WHAT_ITEM_SELECTED = 3000;
final WheelView loopview;
MessageHandler(WheelView loopview) {
this.loopview = loopview;
}
@Override
public final void handleMessage(Message msg) {
switch (msg.what) {
case WHAT_INVALIDATE_LOOP_VIEW:
loopview.invalidate();
break;
case WHAT_SMOOTH_SCROLL:
loopview.smoothScroll(WheelView.ACTION.FLING);
break;
case WHAT_ITEM_SELECTED:
loopview.onItemSelected();
break;
}
}
}
package com.rv.plugin.calendar;
final class OnItemSelectedRunnable implements Runnable {
final WheelView loopView;
OnItemSelectedRunnable(WheelView loopview) {
loopView = loopview;
}
@Override
public final void run() {
loopView.onItemSelectedListener.onItemSelected(loopView.getCurrentItem());
}
}
package com.rv.plugin.calendar;
import android.view.Gravity;
/**
* Created by Sai on 15/8/9.
*/
public class PickerViewAnimateUtil
{
private static final int INVALID = -1;
/**
* Get default animation resource when not defined by the user
*
* @param gravity
* the gravity of the dialog
* @param isInAnimation
* determine if is in or out animation. true when is is
* @return the id of the animation resource
*/
public static int getAnimationResource(int gravity, boolean isInAnimation)
{
switch (gravity)
{
case Gravity.BOTTOM:
return isInAnimation ? R.anim.slide_in_bottom : R.anim.slide_out_bottom;
}
return INVALID;
}
}
package com.rv.plugin.calendar;
import java.util.TimerTask;
final class SmoothScrollTimerTask extends TimerTask {
int realTotalOffset;
int realOffset;
int offset;
final WheelView loopView;
SmoothScrollTimerTask(WheelView loopview, int offset) {
this.loopView = loopview;
this.offset = offset;
realTotalOffset = Integer.MAX_VALUE;
realOffset = 0;
}
@Override
public final void run() {
if (realTotalOffset == Integer.MAX_VALUE) {
realTotalOffset = offset;
}
//把要滚动的范围细分成十小份,按是小份单位来重绘
realOffset = (int) ((float) realTotalOffset * 0.1F);
if (realOffset == 0) {
if (realTotalOffset < 0) {
realOffset = -1;
} else {
realOffset = 1;
}
}
if (Math.abs(realTotalOffset) <= 1) {
loopView.cancelFuture();
loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED);
} else {
loopView.totalScrollY = loopView.totalScrollY + realOffset;
//这里如果不是循环模式,则点击空白位置需要回滚,不然就会出现选到-1 item的 情况
if (!loopView.isLoop) {
float itemHeight = loopView.itemHeight;
float top = (float) (-loopView.initPosition) * itemHeight;
float bottom = (float) (loopView.getItemsCount() - 1 - loopView.initPosition) * itemHeight;
if (loopView.totalScrollY <= top||loopView.totalScrollY >= bottom) {
loopView.totalScrollY = loopView.totalScrollY - realOffset;
loopView.cancelFuture();
loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED);
return;
}
}
loopView.handler.sendEmptyMessage(MessageHandler.WHAT_INVALIDATE_LOOP_VIEW);
realTotalOffset = realTotalOffset - realOffset;
}
}
}
package com.rv.plugin.calendar;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Sai on 15/11/22.
*/
public class TimePopView extends BasePickerView implements View.OnClickListener {
WheelTime2 wheelTime;
private View btnSubmit, btnCancel;
private TextView tvTitle;
private static final String TAG_SUBMIT = "submit";
private static final String TAG_CANCEL = "cancel";
private OnTimeSelectListener timeSelectListener;
public TimePopView(Context context, ArrayList<String> timeList, OnTimeSelectListener timeSelectListener) {
super(context);
this.timeSelectListener = timeSelectListener;
LayoutInflater.from(context).inflate(R.layout.popview_time2, contentContainer);
// -----确定和取消按钮
btnSubmit = findViewById(R.id.btnSubmit);
btnSubmit.setTag(TAG_SUBMIT);
btnCancel = findViewById(R.id.btnCancel);
btnCancel.setTag(TAG_CANCEL);
btnSubmit.setOnClickListener(this);
btnCancel.setOnClickListener(this);
// 顶部标题
tvTitle = (TextView) findViewById(R.id.tvTitle);
// ----时间转轮
final View timepickerview = findViewById(R.id.timepicker);
wheelTime = new WheelTime2(timepickerview,timeList);
// 默认选中当前时间
wheelTime.setPicker(28);
}
/**
* 设置是否循环滚动
*
* @param cyclic
*/
public void setCyclic(boolean cyclic) {
wheelTime.setCyclic(cyclic);
}
public void setCurrentItem(int num)
{
wheelTime.setCurrentItem(num);
}
@Override
public void onClick(View v) {
String tag = (String) v.getTag();
if (tag.equals(TAG_CANCEL)) {
dismiss();
return;
} else {
//确定
if (timeSelectListener != null) {
timeSelectListener.onTimeSelect(wheelTime.getTime());
}
dismiss();
return;
}
}
public interface OnTimeSelectListener {
void onTimeSelect(String date);
}
/* public void setOnTimeSelectListener(OnTimeSelectListener timeSelectListener) {
this.timeSelectListener = timeSelectListener;
}*/
public void setTitle(String title) {
tvTitle.setText(title);
}
}
package com.rv.plugin.calendar;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Sai on 15/11/22.
*/
public class TimePopView2 extends BasePickerView implements View.OnClickListener {
WheelTime2 wheelTime;
private View btnSubmit, btnCancel;
private TextView tvTitle;
private static final String TAG_SUBMIT = "submit";
private static final String TAG_CANCEL = "cancel";
private OnTimeSelectListener timeSelectListener;
public TimePopView2(Context context, ArrayList<String> timeList, OnTimeSelectListener timeSelectListener) {
super(context);
this.timeSelectListener = timeSelectListener;
LayoutInflater.from(context).inflate(R.layout.popview_time2, contentContainer);
// -----确定和取消按钮
btnSubmit = findViewById(R.id.btnSubmit);
btnSubmit.setTag(TAG_SUBMIT);
btnCancel = findViewById(R.id.btnCancel);
btnCancel.setTag(TAG_CANCEL);
btnSubmit.setOnClickListener(this);
btnCancel.setOnClickListener(this);
// 顶部标题
tvTitle = (TextView) findViewById(R.id.tvTitle);
// ----时间转轮
final View timepickerview = findViewById(R.id.timepicker);
wheelTime = new WheelTime2(timepickerview,timeList);
// 默认选中当前时间
wheelTime.setPicker(28);
}
/**
* 设置是否循环滚动
*
* @param cyclic
*/
public void setCyclic(boolean cyclic) {
wheelTime.setCyclic(cyclic);
}
public void setCurrentItem(int num)
{
wheelTime.setCurrentItem(num);
}
@Override
public void onClick(View v) {
String tag = (String) v.getTag();
if (tag.equals(TAG_CANCEL)) {
dismiss();
return;
} else {
//确定
if (timeSelectListener != null) {
timeSelectListener.onTimeSelect(wheelTime.getTime());
}
dismiss();
return;
}
}
public interface OnTimeSelectListener {
void onTimeSelect(String date);
}
/* public void setOnTimeSelectListener(OnTimeSelectListener timeSelectListener) {
this.timeSelectListener = timeSelectListener;
}*/
public void setTitle(String title) {
tvTitle.setText(title);
}
}
package com.rv.plugin.calendar;
import android.view.View;
import com.rv.plugin.calendar.adapter.ArrayWheelAdapter;
import com.rv.plugin.calendar.listener.OnItemSelectedListener;
import java.util.ArrayList;
public class WheelTime2
{
private View view;
private WheelView wv_hours;
private ArrayList<String> timeList;
private String time;
public WheelTime2(View view, ArrayList<String> timeList)
{
super();
this.view = view;
this.timeList =timeList;
setView(view);
}
/**
* @Description: TODO 弹出时间选择器
*/
public void setPicker(int h)
{
wv_hours = (WheelView) view.findViewById(R.id.hour);
wv_hours.setAdapter(new ArrayWheelAdapter(timeList,timeList.size()));
/*wv_hours.setCurrentItem(h);
time = timeList.get(h);*/
// 添加时间滑动监听
OnItemSelectedListener wheelListener = new OnItemSelectedListener()
{
@Override
public void onItemSelected(int index)
{
time = timeList.get(index);
System.out.println("wv_hours--->"+index);
System.out.println("wv_hours-------->"+wv_hours.getCurrentItem());
}
};
wv_hours.setOnItemSelectedListener(wheelListener);
wv_hours.setTextSize(24);
}
/**
* 设置是否循环滚动
*
* @param cyclic
*/
public void setCyclic(boolean cyclic)
{
wv_hours.setCyclic(cyclic);
}
public void setCurrentItem(int num)
{
wv_hours.setCurrentItem(num);
time = timeList.get(num);
}
public String getTime()
{
return time;
}
public View getView()
{
return view;
}
public void setView(View view)
{
this.view = view;
}
}
package com.rv.plugin.calendar.adapter;
import java.util.ArrayList;
/**
* The simple Array wheel adapter
* @param <T> the element type
*/
public class ArrayWheelAdapter<T> implements WheelAdapter {
/** The default items length */
public static final int DEFAULT_LENGTH = 4;
// items
private ArrayList<T> items;
// length
private int length;
/**
* Constructor
* @param items the items
* @param length the max items length
*/
public ArrayWheelAdapter(ArrayList<T> items, int length) {
this.items = items;
this.length = length;
}
/**
* Contructor
* @param items the items
*/
public ArrayWheelAdapter(ArrayList<T> items) {
this(items, DEFAULT_LENGTH);
}
@Override
public Object getItem(int index) {
if (index >= 0 && index < items.size()) {
return items.get(index);
}
return "";
}
@Override
public int getItemsCount() {
return items.size();
}
@Override
public int indexOf(Object o){
return items.indexOf(o);
}
}
package com.rv.plugin.calendar.adapter;
public interface WheelAdapter<T> {
/**
* Gets items count
* @return the count of wheel items
*/
public int getItemsCount();
/**
* Gets a wheel item by index.
*
* @param index the item index
* @return the wheel item text or null
*/
public T getItem(int index);
/**
* Gets maximum item length. It is used to determine the wheel width.
* If -1 is returned there will be used the default wheel width.
*
* @return the maximum item length or -1
*/
public int indexOf(T o);
}
package com.rv.plugin.calendar.listener;
import android.view.MotionEvent;
import com.rv.plugin.calendar.WheelView;
public final class LoopViewGestureListener extends android.view.GestureDetector.SimpleOnGestureListener {
final WheelView loopView;
public LoopViewGestureListener(WheelView loopview) {
loopView = loopview;
}
@Override
public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
loopView.scrollBy(velocityY);
return true;
}
}
package com.rv.plugin.calendar.listener;
public interface OnDismissListener {
void onDismiss(Object o);
}
\ No newline at end of file
package com.rv.plugin.calendar.listener;
public interface OnItemSelectedListener {
void onItemSelected(int index);
}
\ No newline at end of file
package com.rv.plugin.calendar.presenter;
import com.frame.rv.config.RvFrameConfig;
import com.ruiwenliu.wrapper.presenter.MvpPresenter;
public class CalendarPresenter extends MvpPresenter {
@Override
/**
* 域名地址
*/
public String getBaseUrl() {
return RvFrameConfig.AUTH_POST;
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="300dp"/>
<solid android:color="@color/colorYellow"/>
</shape>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:id="@+id/outmost_container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="@color/bgColor_overlay">
<FrameLayout
android:id="@+id/content_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</FrameLayout>
</FrameLayout>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 顶部按钮栏高度 -->
<dimen name="pickerview_topbar_height">44dp</dimen>
<!-- 顶部按钮paddingLeft -->
<dimen name="pickerview_topbar_paddingleft">10dp</dimen>
<!-- 顶部按钮paddingRight -->
<dimen name="pickerview_topbar_paddingright">30dp</dimen>
<!-- 顶部按钮文字大小 -->
<dimen name="pickerview_topbar_btn_textsize">16sp</dimen>
<dimen name="pickerview_topbar_title_textsize">18sp</dimen>
</resources>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment