فهرست منبع

1.替换小红花活动产品接口
2.替换小红花调用支付接口
3.修改根据视频type显示UI逻辑等
4.增加视频标签功能

FailedToRead 2 سال پیش
والد
کامیت
3855e3359e
28فایلهای تغییر یافته به همراه1278 افزوده شده و 281 حذف شده
  1. 8 2
      .idea/misc.xml
  2. 12 0
      app/src/exception/drawable/adapter_item_slidevideo_tab_item_bg.xml
  3. 1 1
      app/src/main/AndroidManifest.xml
  4. 0 1
      app/src/main/java/com/edufound/reader/activity/EventPayActivity.java
  5. 8 4
      app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java
  6. 5 10
      app/src/main/java/com/edufound/reader/activity/WebActivity.java
  7. 11 10
      app/src/main/java/com/edufound/reader/adapter/EventPayItemAdapter.java
  8. 24 5
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  9. 1 1
      app/src/main/java/com/edufound/reader/apiserver/ActivityEventServerImpl.java
  10. 12 0
      app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java
  11. 62 0
      app/src/main/java/com/edufound/reader/bean/ActivityEventBean.java
  12. 40 0
      app/src/main/java/com/edufound/reader/bean/ActivityEventPayBean.java
  13. 0 110
      app/src/main/java/com/edufound/reader/bean/ActivityEventResultBean.java
  14. 2 0
      app/src/main/java/com/edufound/reader/contract/TmailPayContract.java
  15. 2 0
      app/src/main/java/com/edufound/reader/contract/WebContract.java
  16. 23 0
      app/src/main/java/com/edufound/reader/jsinterfaces/WebActivityJsInterfaces.java
  17. 7 0
      app/src/main/java/com/edufound/reader/model/TmailPayModel.java
  18. 10 9
      app/src/main/java/com/edufound/reader/presenter/EventPayPresenter.java
  19. 4 5
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  20. 14 7
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  21. 145 3
      app/src/main/java/com/edufound/reader/presenter/WebPresenter.java
  22. 20 1
      app/src/main/java/com/edufound/reader/util/Consts.java
  23. 23 9
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java
  24. 737 0
      app/src/main/java/com/edufound/reader/util/ShapeCreator.java
  25. 89 86
      app/src/main/res/layout/activity_record.xml
  26. 2 2
      app/src/main/res/layout/activity_saffloer.xml
  27. 4 14
      app/src/main/res/layout/activity_web.xml
  28. 12 1
      app/src/main/res/layout/adapter_item_slidevideo.xml

+ 8 - 2
.idea/misc.xml

@@ -112,8 +112,12 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/window_deviceinfo.xml" value="0.33" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" value="0.4931640625" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" value="0.4699248120300752" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/activity_loginalert_check_selector.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/activity_saffloer_window_item_divier.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/drawable/adapter_item_video_tab_item_bg.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/activity_event_pay.xml" value="0.2" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/popupwindow_webs_events.xml" value="0.2572992700729927" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/drawable/activity_comment_quick_item_one_bg.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/drawable/slidevideo_switch_track_selector.xml" value="0.2005" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/layout/fragment_main_recommend.xml" value="0.5" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/layout/popupwindow_myorder.xml" value="0.2871046228710462" />
@@ -124,6 +128,8 @@
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_exit_login.xml" value="0.2384428223844282" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_select_grade.xml" value="0.1922141119221411" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/activity_comment_item_divier.xml" value="0.2005" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/activity_saffloer_task_divier.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/cusjzplayer_controller_seekbar.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_comment.xml" value="0.1873479318734793" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_event_pay_item.xml" value="0.75" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.2" />
@@ -132,13 +138,13 @@
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_pay_item.xml" value="0.21897810218978103" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_pay_tmail.xml" value="0.22" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_pay_tmail_item.xml" value="0.67" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.30231143552311435" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.75" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer.xml" value="0.5" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_test.xml" value="0.24452554744525548" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_userinfo_setting.xml" value="0.5" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_web.xml" value="0.2" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_popupwindow_myorder.xml" value="0.2913625304136253" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_slidevideo.xml" value="0.33" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_slidevideo.xml" value="0.2975260416666667" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_character.xml" value="0.2615571776155718" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_user.xml" value="0.67" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_exit_app.xml" value="0.2402676399026764" />

+ 12 - 0
app/src/exception/drawable/adapter_item_slidevideo_tab_item_bg.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#FF9B55" />
+    <corners
+        android:bottomLeftRadius="0dp"
+        android:bottomRightRadius="30dp"
+        android:topLeftRadius="30dp"
+        android:topRightRadius="0dp" />
+    <stroke
+        android:width="0dp"
+        android:color="@color/transparent" />
+</shape>

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -162,7 +162,7 @@
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
-        
+
         <activity
             android:name=".activity.TmailPayActivity"
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"

+ 0 - 1
app/src/main/java/com/edufound/reader/activity/EventPayActivity.java

@@ -111,7 +111,6 @@ public class EventPayActivity extends BaseMvpActivity<EventPayPresenter> impleme
 
     @Override
     public void getProductListSuccess(EventPayItemAdapter adapter) {
-        Logger.e("数据返回了,加载数据");
         mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.HORIZONTAL, false));
         mRecyclerView.addItemDecoration(new SpacesItemDecoration(SizeUtils.dp2px(mActivity, 21)));
         mRecyclerView.setAdapter(adapter);

+ 8 - 4
app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java

@@ -16,6 +16,7 @@ import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.SafflowerContract;
 import com.edufound.reader.presenter.SafflowerPresenter;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.EfunboxUtil;
 
 import java.util.HashMap;
@@ -75,10 +76,13 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });
-        addUiClickListener(mEventInto, o -> {
-            //检查是否有活动,然后跳转活动
-            EfunboxUtil.checkEvents(mActivity, getRootView(),false);
-        });
+        if (Consts.isIsHaveFlowerEvent()) {
+            mEventInto.setVisibility(View.VISIBLE);
+            addUiClickListener(mEventInto, o -> {
+                //检查是否有活动,然后跳转活动
+                EfunboxUtil.checkEvents(mActivity, getRootView(), false);
+            });
+        }
 
         addUiClickListener(mWindowBack, o -> {
             mMainFrame.setVisibility(View.VISIBLE);

+ 5 - 10
app/src/main/java/com/edufound/reader/activity/WebActivity.java

@@ -3,33 +3,27 @@ package com.edufound.reader.activity;
 import android.app.Activity;
 import android.os.Process;
 import android.view.ViewGroup;
-import android.webkit.WebView;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
-import com.baidu.duer.bot.directive.payload.AmountInfo;
-import com.baidu.duer.botsdk.BotIntent;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.WebContract;
 import com.edufound.reader.presenter.WebPresenter;
-import com.edufound.reader.util.Consts;
-
-import java.util.HashMap;
-
-import androidx.annotation.NonNull;
-import io.reactivex.rxjava3.annotations.Nullable;
 
 public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebContract.View {
 
 
+    Activity mActivity;
+
     @BindView(id = R.id.web_back)
     ImageView mBack;
 
     @BindView(id = R.id.web_frame)
     FrameLayout mWebFrame;
 
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_web;
@@ -37,6 +31,7 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
 
     @Override
     public void initView() {
+        mActivity = this;
         mPresenter = new WebPresenter();
         mPresenter.attachView(this);
         mWebFrame.addView(mPresenter.initWebView(getIntent()));
@@ -78,7 +73,7 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
 
     @Override
     public Activity getActivity() {
-        return null;
+        return mActivity;
     }
 
     @Override

+ 11 - 10
app/src/main/java/com/edufound/reader/adapter/EventPayItemAdapter.java

@@ -13,6 +13,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.edufound.reader.R;
+import com.edufound.reader.bean.ActivityEventPayBean;
 import com.edufound.reader.bean.PayResultBean;
 import com.edufound.reader.listener.RecyclerItemClickListener;
 import com.jakewharton.rxbinding4.view.RxView;
@@ -27,10 +28,10 @@ public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder
 
     private LayoutInflater mLayoutInflater;
     private Context mContext;
-    private List<PayResultBean> mListData;
-    private RecyclerItemClickListener<PayResultBean> mItemClickListener;
+    private List<ActivityEventPayBean> mListData;
+    private RecyclerItemClickListener<ActivityEventPayBean> mItemClickListener;
 
-    public EventPayItemAdapter(Context context, List<PayResultBean> listData) {
+    public EventPayItemAdapter(Context context, List<ActivityEventPayBean> listData) {
         mContext = context;
         mLayoutInflater = LayoutInflater.from(context);
         mListData = listData;
@@ -44,7 +45,7 @@ public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder
     }
 
 
-    public void onItemClick(RecyclerItemClickListener<PayResultBean> listener) {
+    public void onItemClick(RecyclerItemClickListener<ActivityEventPayBean> listener) {
         mItemClickListener = listener;
     }
 
@@ -52,10 +53,10 @@ public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder
     public void onBindViewHolder(@NonNull EventPayItemHolder holder, @SuppressLint("RecyclerView") int position) {
         DecimalFormat df = new DecimalFormat("########0.00");
 
-        holder.mMoney.setText(df.format(Double.parseDouble(mListData.get(position).getPrice()) / 100));
-        holder.mDetail.setText("原价:" + df.format(Double.parseDouble(mListData.get(position).getOriginPrice()) / 100) + ",现价:" + df.format(Double.parseDouble(mListData.get(position).getPrice()) / 100) + "元");
-        holder.mRFDetail.setText("抵用券减" + df.format(Double.parseDouble(mListData.get(position).getOriginPrice()) / 100) + ",剩余小红花" + 12 + "朵");
-        holder.mTitle.setText(mListData.get(position).getTitle());
+        holder.mMoney.setText(df.format(Double.parseDouble(mListData.get(position).getFinalAmount()) / 100));
+        holder.mDetail.setText("原价:" + df.format(Double.parseDouble(mListData.get(position).getProduct().getOriginPrice()) / 100) + ",现价:" + df.format(Double.parseDouble(mListData.get(position).getProduct().getPrice()) / 100) + "元");
+        holder.mRFDetail.setText("抵用券减" + (mListData.get(position).getVoucherAmount() + "元  剩余小红花" + mListData.get(position).getRedFlower() + "朵"));
+        holder.mTitle.setText(mListData.get(position).getProduct().getTitle());
         RxView.clicks(holder.itemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
             if (mItemClickListener != null) {
                 mItemClickListener.onClickListener(position, holder.itemView, mListData.get(position));
@@ -63,9 +64,9 @@ public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder
                 Logger.e("未设置itemclick");
             }
         });
-        if (mListData.get(position).getPayType().equals("YEAR")) {
+        if (mListData.get(position).getProduct().getPayType().equals("YEAR")) {
             holder.mBackGround.setBackgroundResource(R.drawable.event_pay_item_year);
-        } else if (mListData.get(position).getPayType().equals("MONTH")) {
+        } else if (mListData.get(position).getProduct().getPayType().equals("MONTH")) {
             holder.mBackGround.setBackgroundResource(R.drawable.event_pay_item_month);
         } else {
             holder.mBackGround.setBackgroundResource(R.drawable.event_pay_item_month);

+ 24 - 5
app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java

@@ -2,13 +2,17 @@ package com.edufound.reader.adapter;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.graphics.Color;
 import android.graphics.Rect;
+import android.graphics.drawable.GradientDrawable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.CompoundButton;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.Switch;
+import android.widget.TextView;
 
 import com.edufound.reader.R;
 import com.edufound.reader.activity.WebActivity;
@@ -20,8 +24,10 @@ import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.cusview.AutoPollRecyclerView;
 import com.edufound.reader.cusview.RvListJzvdStd;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.OkHttpClient;
+import com.edufound.reader.util.ShapeCreator;
 import com.edufound.reader.util.SizeUtils;
 import com.edufound.reader.videoutil.JZMediaIjk;
 import com.google.gson.reflect.TypeToken;
@@ -84,7 +90,8 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
          * */
         holder.mItemView.setTag(mListData.get(position).getUserRead().getType());
         holder.itemView.setTag(mListData.get(position).getUserRead().getType());
-        if (mListData.get(position).getUserRead().getType().equals("READ") || mListData.get(position).getUserRead().getType().equals("AAA")) {
+        if (mListData.get(position).getUserRead().getType().equals("READ") || mListData.get(position).getUserRead().getType().equals("EXAMPLE")) {
+//            AAA代替EXAMPLE
             holder.initDanMu(mListData.get(position).getUserRead().getId());
             holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                 @Override
@@ -98,18 +105,27 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
                     }
                 }
             });
-        } else if (mListData.get(position).getUserRead().getType().equals("EXAMPLE")) {
+        } else if (mListData.get(position).getUserRead().getType().equals("AA")) {
             //这里修改成新的type。就可以使用了
             holder.mSwitch.setVisibility(View.INVISIBLE);
             holder.mEventBtn.setVisibility(View.VISIBLE);
             holder.mEventBtn.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    Intent intent = new Intent(mContext, WebActivity.class);
-                    intent.putExtra("loadUrl", "");
-                    mContext.startActivity(intent);
+                    EfunboxUtil.toWebFlowerActivity(mContext);
                 }
             });
+            TextView textView = new TextView(mContext);
+            textView.setLayoutParams(new LinearLayout.LayoutParams(SizeUtils.dp2px(mContext, 200), LinearLayout.LayoutParams.MATCH_PARENT));
+            //左上圆角
+            holder.mTagLayout.removeAllViews();
+            ShapeCreator.create()
+                    .setCornerRadiusLT(50)
+                    .setCornerRadiusRB(50)
+                    .setSolidColor(mContext.getResources().getColor(R.color.grassgreen))
+                    .into(textView);
+            holder.mTagLayout.addView(textView);
+            holder.mTagLayout.setVisibility(View.VISIBLE);
         } else {
 
         }
@@ -142,6 +158,7 @@ class VideoHolder extends RecyclerView.ViewHolder {
     public AutoPollRecyclerView mMarqueen;
     public Switch mSwitch;
     public ImageView mEventBtn;
+    public LinearLayout mTagLayout;
     public Activity mContext;
 
     public VideoHolder(Activity context, @NonNull View itemView) {
@@ -151,6 +168,8 @@ class VideoHolder extends RecyclerView.ViewHolder {
         mVideo = itemView.findViewById((R.id.slidevideo_video));
         mSwitch = itemView.findViewById(R.id.slidevideo_video_switch);
         mEventBtn = itemView.findViewById(R.id.adapter_item_slidevideo_event_btn);
+        mTagLayout = itemView.findViewById(R.id.adapter_item_slidevideo_tagLayout);
+        mTagLayout.setVisibility(View.GONE);
         mEventBtn.setVisibility(View.GONE);
         mSwitch.setVisibility(View.INVISIBLE);
 //        if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {

+ 1 - 1
app/src/main/java/com/edufound/reader/apiserver/ActivityEventServerImpl.java

@@ -12,7 +12,7 @@ import com.okhttplib.callback.Callback;
  */
 public class ActivityEventServerImpl implements ActivityEventServer {
     private String API = Consts.getFinalApi();
-    public static String EVENT_TYPE_LOIN = "1";
+    public static String EVENT_TYPE_LOGIN = "1";
     public static String EVENT_TYPE_FLOWER = "2";
 
 

+ 12 - 0
app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java

@@ -37,10 +37,20 @@ public class OrderApiServerImpl implements OrderApiServer {
         OkHttpClient.doGetAsync(new HttpInfo.Builder().setUrl(API + "/auth"), callback);
     }
 
+    /**
+     * @ TODO: 获取小红花的支付产品列表
+     */
+    @Override
+    public void getFlowerEventProductList(Activity activity, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/activity/product"), callback);
+    }
+
     @Override
     public void getAuth(Activity activity, Callback callback) {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/auth"), callback);
     }
+
+
 }
 
 interface OrderApiServer {
@@ -55,4 +65,6 @@ interface OrderApiServer {
     void createdOrder(Activity activity, String json, Callback callback);
 
     void getAuth(Callback callback);
+
+    void getFlowerEventProductList(Activity activity, Callback callback);
 }

+ 62 - 0
app/src/main/java/com/edufound/reader/bean/ActivityEventBean.java

@@ -0,0 +1,62 @@
+package com.edufound.reader.bean;
+
+import java.util.List;
+
+public class ActivityEventBean {
+
+    private String amount;
+    private String endTime;
+    private String redFlower;
+    private String redFlowerTotal;
+    private String startTime;
+    private String voucherAmount;
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getRedFlower() {
+        return redFlower;
+    }
+
+    public void setRedFlower(String redFlower) {
+        this.redFlower = redFlower;
+    }
+
+    public String getRedFlowerTotal() {
+        return redFlowerTotal;
+    }
+
+    public void setRedFlowerTotal(String redFlowerTotal) {
+        this.redFlowerTotal = redFlowerTotal;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getVoucherAmount() {
+        return voucherAmount;
+    }
+
+    public void setVoucherAmount(String voucherAmount) {
+        this.voucherAmount = voucherAmount;
+    }
+}
+

+ 40 - 0
app/src/main/java/com/edufound/reader/bean/ActivityEventPayBean.java

@@ -0,0 +1,40 @@
+package com.edufound.reader.bean;
+
+public class ActivityEventPayBean {
+    private String finalAmount;
+    private PayResultBean product;
+    private String redFlower;
+    private String voucherAmount;
+
+    public String getFinalAmount() {
+        return finalAmount;
+    }
+
+    public void setFinalAmount(String finalAmount) {
+        this.finalAmount = finalAmount;
+    }
+
+    public PayResultBean getProduct() {
+        return product;
+    }
+
+    public void setProduct(PayResultBean product) {
+        this.product = product;
+    }
+
+    public String getRedFlower() {
+        return redFlower;
+    }
+
+    public void setRedFlower(String redFlower) {
+        this.redFlower = redFlower;
+    }
+
+    public String getVoucherAmount() {
+        return voucherAmount;
+    }
+
+    public void setVoucherAmount(String voucherAmount) {
+        this.voucherAmount = voucherAmount;
+    }
+}

+ 0 - 110
app/src/main/java/com/edufound/reader/bean/ActivityEventResultBean.java

@@ -1,110 +0,0 @@
-package com.edufound.reader.bean;
-
-import java.util.List;
-
-public class ActivityEventResultBean {
-
-    private String code;
-    private String count;
-    private List<ActivityEventBean> data;
-    private String message;
-    private String success;
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getCount() {
-        return count;
-    }
-
-    public void setCount(String count) {
-        this.count = count;
-    }
-
-    public List<ActivityEventBean> getData() {
-        return data;
-    }
-
-    public void setData(List<ActivityEventBean> data) {
-        this.data = data;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public String getSuccess() {
-        return success;
-    }
-
-    public void setSuccess(String success) {
-        this.success = success;
-    }
-
-    public class ActivityEventBean {
-        private String amount;
-        private String endTime;
-        private String redFlower;
-        private String redFlowerTotal;
-        private String startTime;
-        private String voucherAmount;
-
-        public String getAmount() {
-            return amount;
-        }
-
-        public void setAmount(String amount) {
-            this.amount = amount;
-        }
-
-        public String getEndTime() {
-            return endTime;
-        }
-
-        public void setEndTime(String endTime) {
-            this.endTime = endTime;
-        }
-
-        public String getRedFlower() {
-            return redFlower;
-        }
-
-        public void setRedFlower(String redFlower) {
-            this.redFlower = redFlower;
-        }
-
-        public String getRedFlowerTotal() {
-            return redFlowerTotal;
-        }
-
-        public void setRedFlowerTotal(String redFlowerTotal) {
-            this.redFlowerTotal = redFlowerTotal;
-        }
-
-        public String getStartTime() {
-            return startTime;
-        }
-
-        public void setStartTime(String startTime) {
-            this.startTime = startTime;
-        }
-
-        public String getVoucherAmount() {
-            return voucherAmount;
-        }
-
-        public void setVoucherAmount(String voucherAmount) {
-            this.voucherAmount = voucherAmount;
-        }
-    }
-
-}

+ 2 - 0
app/src/main/java/com/edufound/reader/contract/TmailPayContract.java

@@ -14,6 +14,8 @@ public interface TmailPayContract {
 //        void isPay(Activity activity, String orderId, Callback callback);
 
         void TMailPayGenie(Activity activity, String json, Callback callback);
+
+        void TMailFlowerPay(Activity activity, String json, Callback callback);
     }
 
     interface View extends BaseView {

+ 2 - 0
app/src/main/java/com/edufound/reader/contract/WebContract.java

@@ -3,6 +3,8 @@ package com.edufound.reader.contract;
 import android.content.Intent;
 import android.webkit.WebView;
 
+import androidx.constraintlayout.widget.ConstraintLayout;
+
 import com.edufound.reader.base.BaseView;
 
 public interface WebContract {

+ 23 - 0
app/src/main/java/com/edufound/reader/jsinterfaces/WebActivityJsInterfaces.java

@@ -0,0 +1,23 @@
+package com.edufound.reader.jsinterfaces;
+
+import android.content.Intent;
+import android.graphics.Color;
+import android.webkit.JavascriptInterface;
+
+import com.edufound.reader.activity.EventPayActivity;
+import com.edufound.reader.contract.WebContract;
+
+public class WebActivityJsInterfaces {
+
+    WebContract.View mView;
+
+    public WebActivityJsInterfaces(WebContract.View view) {
+        mView = view;
+    }
+
+    @JavascriptInterface
+    public void toPayActivity() {
+        Intent intent = new Intent(mView.getActivity(), EventPayActivity.class);
+        mView.getActivity().startActivity(intent);
+    }
+}

+ 7 - 0
app/src/main/java/com/edufound/reader/model/TmailPayModel.java

@@ -14,8 +14,15 @@ public class TmailPayModel implements TmailPayContract.Model {
     @Override
     public void TMailPayGenie(Activity activity, String json, Callback callback) {
         OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/genie").addParamJson(json), callback);
+
     }
 
+    @Override
+    public void TMailFlowerPay(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/genie/activity").addParamJson(json), callback);
+    }
+
+
 //    @Override
 //    public void isPay(Activity activity, String orderId, Callback callback) {
 //        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/info/" + orderId), callback);

+ 10 - 9
app/src/main/java/com/edufound/reader/presenter/EventPayPresenter.java

@@ -12,6 +12,7 @@ import com.edufound.reader.adapter.EventPayItemAdapter;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.ActivityEventPayBean;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.PayResultBean;
@@ -38,7 +39,7 @@ public class EventPayPresenter extends BasePresenter<EventPayContract.View> impl
     TmailPayModel mTMailModel;
     EventPayModel mModel;
     OrderApiServerImpl mOrderApi;
-    List<PayResultBean> mPayResult;
+    List<ActivityEventPayBean> mPayResult;
     EventPayItemAdapter mPayAdapter;
 
     public EventPayPresenter() {
@@ -49,17 +50,17 @@ public class EventPayPresenter extends BasePresenter<EventPayContract.View> impl
 
     @Override
     public void getProductListInfo() {
-        mOrderApi.getProductListInfo(mView.getActivity(), Consts.getUmengChannel(), new Callback() {
+        mOrderApi.getFlowerEventProductList(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
                 Logger.e("获取成功:" + info.getRetDetail());
-                HttpResultBean<List<PayResultBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<PayResultBean>>>() {
+                HttpResultBean<List<ActivityEventPayBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<ActivityEventPayBean>>>() {
                 }.getType());
                 mPayResult = bean.getData();
                 mPayAdapter = new EventPayItemAdapter(mView.getActivity(), mPayResult);
-                mPayAdapter.onItemClick(new RecyclerItemClickListener<PayResultBean>() {
+                mPayAdapter.onItemClick(new RecyclerItemClickListener<ActivityEventPayBean>() {
                     @Override
-                    public void onClickListener(int position, View view, PayResultBean payResultBean) {
+                    public void onClickListener(int position, View view, ActivityEventPayBean payResultBean) {
                         //去支付
                         Logger.e("position:" + position);
                         toPayByChannel(payResultBean);
@@ -76,18 +77,18 @@ public class EventPayPresenter extends BasePresenter<EventPayContract.View> impl
         });
     }
 
-    public void toPayByChannel(PayResultBean resultBean) {
+    public void toPayByChannel(ActivityEventPayBean resultBean) {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
 
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
             //天猫支付
             Map<String, String> params = new HashMap<>();
-            params.put("productId", resultBean.getId());
+            params.put("productId", resultBean.getProduct().getId());
             params.put("channel", Consts.getUmengChannel());
-            params.put("payType", resultBean.getPayType());
+            params.put("payType", resultBean.getProduct().getPayType());
             params.put("uid", Consts.getmConstsUserBean().getUid());
             params.put("first", "false");
-            mTMailModel.TMailPayGenie(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(params), new Callback() {
+            mTMailModel.TMailFlowerPay(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(params), new Callback() {
                 @Override
                 public void onSuccess(HttpInfo info) throws IOException {
                     Logger.e("创建订单返回信息成功:" + info.getRetDetail());

+ 4 - 5
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -17,10 +17,9 @@ import com.edufound.reader.apiserver.OrderApiServerImpl;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
-import com.edufound.reader.bean.ActivityEventResultBean;
+import com.edufound.reader.bean.ActivityEventBean;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.HttpResultBean;
-import com.edufound.reader.bean.HttpResultDataListBean;
 import com.edufound.reader.bean.SignBean;
 import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.bean.UserEventEnum;
@@ -265,15 +264,15 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     if (Consts.getmConstsUserBean() == null && Consts.getmConstsBaiDuUserBean() == null) {
                         //百度跟自己的都没有用户信息,请求有没有注册活动,有活动显示活动,没活动不显示
                         //请求接口
-                        mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_LOIN, new Callback() {
+                        mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_LOGIN, new Callback() {
                             @Override
                             public void onSuccess(HttpInfo info) throws IOException {
                                 Logger.e("获取活动成功:" + info.getRetDetail());
-                                ActivityEventResultBean activityBean = info.getRetDetail(new TypeToken<ActivityEventResultBean>() {
+                                HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
                                 }.getType());
                                 if (Boolean.valueOf(activityBean.getSuccess())) {
                                     //接口返回成功
-                                    if (activityBean.getData().size() > 0) {
+                                    if (activityBean.getData() != null) {
                                         //有活动
                                         PopWindowUtil.RegistrationEventsWindow(mView.getActivity(), mView.getRootView(), new PopUtilClickListener() {
                                             @Override

+ 14 - 7
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -173,13 +173,13 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
                 }
 
-                if (mAdapter.getItemType(mCurrentPosition).equals("READ")) {
-                    mView.showAllUi();
-                } else if (mAdapter.getItemType(mCurrentPosition).equals("EXAMPLE")) {
-                    mView.eventHideUi();
-                } else {
-
-                }
+//                if (mAdapter.getItemType(mCurrentPosition).equals("READ")) {
+//                    mView.showAllUi();
+//                } else if (mAdapter.getItemType(mCurrentPosition).equals("EXAMPLE")) {
+//                    mView.eventHideUi();
+//                } else {
+//
+//                }
 //                Logger.e("mCurrentPosition:" + mCurrentPosition);
 //                Logger.e("mDataList:" + mDataList.size());
                 scrollToNextFunction(rv, false);
@@ -441,6 +441,13 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
         if (rv == null || rv.getChildAt(0) == null) {
             return;
         }
+        if (mAdapter.getItemType(mCurrentPosition).equals("READ") || mAdapter.getItemType(mCurrentPosition).equals("EXAMPLE")) {
+            mView.showAllUi();
+        } else if (mAdapter.getItemType(mCurrentPosition).equals("AAA")) {
+            mView.eventHideUi();
+        } else {
+
+        }
         //获取当前显示的View 的数据
         int childCount = rv.getChildCount();
         //获取最后一具 Item 对应的View

+ 145 - 3
app/src/main/java/com/edufound/reader/presenter/WebPresenter.java

@@ -1,26 +1,168 @@
 package com.edufound.reader.presenter;
 
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.os.Build;
+import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.JsResult;
+import android.webkit.WebChromeClient;
+import android.webkit.WebResourceRequest;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebSettings;
 import android.webkit.WebView;
+import android.webkit.WebViewClient;
 import android.widget.FrameLayout;
 
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.contract.WebContract;
+import com.edufound.reader.jsinterfaces.WebActivityJsInterfaces;
+import com.edufound.reader.receiver.ShowPageLoadingReceiver;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUtil;
+import com.edufound.reader.util.DeviceUuidFactory;
+import com.google.gson.Gson;
 import com.orhanobut.logger.Logger;
 
 public class WebPresenter extends BasePresenter<WebContract.View> implements WebContract.Presenter {
+
+    WebActivityJsInterfaces mJsInterfaces;
+
+    public WebPresenter() {
+
+    }
+
+    @Override
+    public void attachView(WebContract.View view) {
+        super.attachView(view);
+        mJsInterfaces = new WebActivityJsInterfaces(mView);
+
+    }
+
     @Override
     public WebView initWebView(Intent intent) {
         WebView webview = new WebView(Consts.getmApplicAtion());
         webview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
-        webview.getSettings().setUseWideViewPort(true);
+        if (Build.VERSION.SDK_INT >= 19) {
+            webview.getSettings().setLoadsImagesAutomatically(true);
+        } else {
+            webview.getSettings().setLoadsImagesAutomatically(false);
+        }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+        }
+        webview.requestFocus(View.FOCUS_DOWN);
+        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
+        }
+        webview.getSettings().setBlockNetworkImage(false);
+        // webview.getSettings().set
+        webview.setBackgroundColor(Color.TRANSPARENT);
+//       webview.setBackgroundResource();
+        webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
         webview.getSettings().setLoadWithOverviewMode(true);
+        webview.getSettings().setTextZoom(100);
+        webview.getSettings().setUseWideViewPort(true);
         webview.getSettings().setJavaScriptEnabled(true);
-        webview.getSettings().setDomStorageEnabled(true);
-        String url = intent.getStringExtra("loadUrl");
+        webview.getSettings().setDomStorageEnabled(false);
+        webview.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public Bitmap getDefaultVideoPoster() {
+                return null;
+            }
+
+            @Override
+            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
+
+                return super.onJsAlert(view, url, message, result);
+            }
+
+            @Override
+            public void onShowCustomView(View view, CustomViewCallback callback) {
+
+                super.onShowCustomView(view, callback);
+            }
+
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+
+                if (newProgress >= 100) {
+                }
+                super.onProgressChanged(view, newProgress);
+            }
+
+        });
+
+        webview.setWebViewClient(new WebViewClient() {
+
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+//                webview.removeAllViews();
+                view.loadUrl(url);
+                return true;
+            }
+
+            @Override
+            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+                super.onReceivedError(view, errorCode, description, failingUrl);
+                view.loadUrl("");
+            }
+
+            @Override
+            public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
+                super.onReceivedHttpError(view, request, errorResponse);
+//                int statusCode = 0;
+//                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
+//                    statusCode = errorResponse.getStatusCode();
+//                }
+//                System.out.println("onReceivedHttpError code = " + statusCode);
+//                if (404 == statusCode) {
+//                    view.loadUrl("about:blank");// 避免出现默认的错误界面
+//                    showDisConnNeWorkWindow();
+//                }
+
+            }
+
+            @Override
+            public void onPageStarted(WebView view, String url, Bitmap favicon) {
+                super.onPageStarted(view, url, favicon);
+            }
+
+            @Override
+            public void onPageFinished(WebView view, String url) {
+                if (!webview.getSettings().getLoadsImagesAutomatically()) {
+                    webview.getSettings().setLoadsImagesAutomatically(true);
+                }
+                mView.hideLoading();
+                super.onPageFinished(view, url);
+            }
+
+        });
+        webview.addJavascriptInterface(mJsInterfaces, "efunboxJS");
+
+        //加载地址
+        String url = intent.getStringExtra("loadUrl") + "?";
+        Logger.e("paramsJson:" + intent.getStringExtra("paramsJson"));
+        Gson gson = new Gson();
+        WebParams params = gson.fromJson(intent.getStringExtra("paramsJson"), WebParams.class);
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("channelCode=" + params.channelCode);
+        buffer.append("&uid=" + params.uid);
+        buffer.append("&versionCode=" + params.versionCode);
+        url += buffer.toString();
+        Logger.e("网页加载地址:" + url);
         webview.loadUrl(url);
+        Intent hideLoading = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_HIDE);
+        Consts.getmApplicAtion().getApplicationContext().sendBroadcast(hideLoading);
         return webview;
     }
+
+    class WebParams {
+        private String channelCode;
+        private String uid;
+        private String versionCode;
+
+    }
 }

+ 20 - 1
app/src/main/java/com/edufound/reader/util/Consts.java

@@ -18,7 +18,6 @@ public class Consts {
 
     private static BaiDuUserInfo mConstsBaiDuUserBean;
 
-
     private static boolean isDebug = false;
 
     private static String privService = "http://m-xyyf-web.ai160.com/res/protocol/private.htm";
@@ -50,6 +49,26 @@ public class Consts {
     private static String TMAIL_DEVICE_ID = "-1";
 
 
+    private static boolean isHaveFlowerEvent = false;
+
+    private static String EVENT_TYPE_FLOWER_URL = "http://activity.ai160.com/index.html";
+
+
+    public static boolean isIsHaveFlowerEvent() {
+        return isHaveFlowerEvent;
+    }
+
+    public static void setIsHaveFlowerEvent(boolean isHaveFlowerEvent) {
+        Consts.isHaveFlowerEvent = isHaveFlowerEvent;
+    }
+
+    /**
+     * @ TODO: 获取小红花活动地址
+     */
+    public static String getEventTypeFlowerUrl() {
+        return EVENT_TYPE_FLOWER_URL;
+    }
+
     public static Boolean getIsNeedLogin() {
         return isNeedLogin;
     }

+ 23 - 9
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -7,18 +7,20 @@ import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.view.View;
 
-import com.edufound.reader.activity.EventPayActivity;
 import com.edufound.reader.activity.LoginAlertActivity;
 import com.edufound.reader.activity.PayActivity;
 import com.edufound.reader.activity.TmailPayActivity;
 import com.edufound.reader.activity.WebActivity;
 import com.edufound.reader.apiserver.ActivityEventServerImpl;
-import com.edufound.reader.bean.ActivityEventResultBean;
+import com.edufound.reader.bean.ActivityEventBean;
 import com.edufound.reader.bean.ChannelCodeEnum;
+import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.popwindow.PopWindowUtil;
+import com.edufound.reader.receiver.ShowPageLoadingReceiver;
 import com.edufound.reader.tmailsdk.TMailSDKUtil;
+import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
@@ -26,6 +28,8 @@ import com.orhanobut.logger.Logger;
 
 import java.io.IOException;
 import java.text.DecimalFormat;
+import java.util.HashMap;
+import java.util.Map;
 
 public class EfunboxUtil {
 
@@ -231,11 +235,12 @@ public class EfunboxUtil {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
                 Logger.e("获取其他活动:" + info.getRetDetail());
-                ActivityEventResultBean activityBean = info.getRetDetail(new TypeToken<ActivityEventResultBean>() {
+                HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
                 }.getType());
                 if (Boolean.valueOf(activityBean.getSuccess())) {
                     //接口返回成功
-                    if (activityBean.getData().size() > 0) {
+                    if (activityBean.getData() != null) {
+                        Consts.setIsHaveFlowerEvent(true);
                         //有活动
                         PopWindowUtil.webviewEventsWindow(context, parent, new PopUtilClickListener() {
                             @Override
@@ -246,11 +251,7 @@ public class EfunboxUtil {
                             @Override
                             public void clickSubmit(Object object) {
                                 //去webview界面,加载活动地址
-                                Intent intent = new Intent(context, WebActivity.class);
-                                intent.putExtra("loadUrl", "http://activity.ai160.com/index.html");
-                                context.startActivity(intent);
-//                               Intent intet = new Intent(context, EventPayActivity.class);
-//                                context.startActivity(intet);d
+                                toWebFlowerActivity(context);
                             }
                         }, needWindow);
                     } else {
@@ -267,4 +268,17 @@ public class EfunboxUtil {
         });
 
     }
+
+    public static void toWebFlowerActivity(Context context) {
+        Intent showLoadingIntent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
+        Consts.getmApplicAtion().getApplicationContext().sendBroadcast(showLoadingIntent);
+        Intent intent = new Intent(context, WebActivity.class);
+        intent.putExtra("loadUrl", Consts.getEventTypeFlowerUrl());
+        Map<String, String> map = new HashMap<>();
+        map.put("uid", Consts.getUID());
+        map.put("channelCode", Consts.getUmengChannel());
+        map.put("versionCode", DeviceUtil.getVersionCode(context));
+        intent.putExtra("paramsJson", new Gson().toJson(map));
+        context.startActivity(intent);
+    }
 }

+ 737 - 0
app/src/main/java/com/edufound/reader/util/ShapeCreator.java

@@ -0,0 +1,737 @@
+package com.edufound.reader.util;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.drawable.GradientDrawable;
+import android.graphics.drawable.StateListDrawable;
+import android.os.Build;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.core.view.ViewCompat;
+
+public class ShapeCreator {
+
+    /**
+     * 对应标签 shape
+     */
+    private int shape;
+    public static final int RECTANGLE = 0;
+    public static final int OVAL = 1;
+    public static final int LINE = 2;
+
+    /**
+     * 对应标签 corners
+     */
+    private float cornerRadius;  //四个角的半径
+    private float cornerRadiusLT; //左上角半径
+    private float cornerRadiusRT; //右上角半径
+    private float cornerRadiusLB; //左下角半径
+    private float cornerRadiusRB; //右下角半径
+    /**
+     * 对应标签 solid
+     */
+    private int solidColor;
+    private int solidPressColor = 0;
+    private int solidDisableColor = 0;
+
+    /**
+     * 对应标签stroke
+     */
+    private int strokeColor;
+    private int strokePressColor = 0;
+    private int strokeDisableColor = 0;
+    private int strokeWidth;
+    private int strokeDashWidth;
+    private int strokeDashGap;
+
+    /**
+     * 对应标签gradient
+     */
+    private int gradientType = -1;
+    public static final int LINEAR_GRADIENT = 0;
+    public static final int RADIAL_GRADIENT = 1;
+    public static final int SWEEP_GRADIENT = 2;
+    private int gradientAngle;
+    private float gradientCenterX;
+    private float gradientCenterY;
+    private int gradientStartColor;
+    private int gradientCenterColor = 0;
+    private int gradientEndColor;
+    private float gradientRadius;
+
+    /**
+     * 对应标签 size
+     */
+    private int width;
+    private int height;
+
+    /**
+     * true 默认dp
+     * false 默认px
+     */
+    private boolean dpUnitEnabled = true;
+    /**
+     * 状态标签是否启用  selector 标签
+     */
+    private boolean stateEnabled = false;
+    /**
+     * 是否支持设置文字颜色state
+     */
+    private boolean stateTextColorEnabled = false;
+    private int textColor, textPressColor, textDisableColor;
+
+    public static ShapeCreator create() {
+        return new ShapeCreator();
+    }
+
+    /**
+     * 直接指定类型 shape line
+     *
+     * @return
+     */
+    public static ShapeCreator line() {
+        return new ShapeCreator().setShape(LINE);
+    }
+
+    /**
+     * 直接指定类型 shape oval
+     *
+     * @return
+     */
+    public static ShapeCreator oval() {
+        return new ShapeCreator().setShape(OVAL);
+    }
+
+    /**
+     * <corners android:radius=""/>
+     *
+     * @param radius
+     * @return
+     */
+    public ShapeCreator setCornerRadius(float radius) {
+        this.cornerRadius = radius;
+        return this;
+    }
+
+    /**
+     * <corners android:topLeftRadius=""/>
+     *
+     * @param cornerRadiusLT
+     * @return
+     */
+    public ShapeCreator setCornerRadiusLT(float cornerRadiusLT) {
+        this.cornerRadiusLT = cornerRadiusLT;
+        return this;
+    }
+
+    /**
+     * <corners android:topRightRadius=""/>
+     *
+     * @param cornerRadiusRT
+     * @return
+     */
+    public ShapeCreator setCornerRadiusRT(float cornerRadiusRT) {
+        this.cornerRadiusRT = cornerRadiusRT;
+        return this;
+    }
+
+    /**
+     * <corners android:bottomLeftRadius=""/>
+     *
+     * @param cornerRadiusLB
+     * @return
+     */
+    public ShapeCreator setCornerRadiusLB(float cornerRadiusLB) {
+        this.cornerRadiusLB = cornerRadiusLB;
+        return this;
+    }
+
+    /**
+     * <corners android:bottomRightRadius=""/>
+     *
+     * @param cornerRadiusRB
+     * @return
+     */
+    public ShapeCreator setCornerRadiusRB(float cornerRadiusRB) {
+        this.cornerRadiusRB = cornerRadiusRB;
+        return this;
+    }
+
+    /**
+     * <solid android:color=""/>
+     *
+     * @param solidColor
+     * @return
+     */
+    public ShapeCreator setSolidColor(int solidColor) {
+        this.solidColor = solidColor;
+        return this;
+    }
+
+    /**
+     * state_press='true' color
+     *
+     * @param solidPressColor
+     * @return
+     */
+    public ShapeCreator setSolidPressColor(int solidPressColor) {
+        this.solidPressColor = solidPressColor;
+        return this;
+    }
+
+    /**
+     * state_enabled='false' color
+     *
+     * @param solidDisableColor
+     * @return
+     */
+    public ShapeCreator setSolidDisableColor(int solidDisableColor) {
+        this.solidDisableColor = solidDisableColor;
+        return this;
+    }
+
+    /**
+     * <stroke android:color=""/>
+     *
+     * @param strokeColor
+     * @return
+     */
+    public ShapeCreator setStrokeColor(int strokeColor) {
+        this.strokeColor = strokeColor;
+        return this;
+    }
+
+    /**
+     * state_press='true' color
+     *
+     * @param strokePressColor
+     * @return
+     */
+    public ShapeCreator setStrokePressColor(int strokePressColor) {
+        this.strokePressColor = strokePressColor;
+        return this;
+    }
+
+    /**
+     * state_enabled='false' color
+     *
+     * @param strokeDisableColor
+     * @return
+     */
+    public ShapeCreator setStrokeDisableColor(int strokeDisableColor) {
+        this.strokeDisableColor = strokeDisableColor;
+        return this;
+    }
+
+    /**
+     * <stroke android:width=""/>
+     *
+     * @param strokeWidth
+     * @return
+     */
+    public ShapeCreator setStrokeWidth(int strokeWidth) {
+        this.strokeWidth = strokeWidth;
+        return this;
+    }
+
+    /**
+     * <stroke android:dashWidth=""/>
+     *
+     * @param strokeDashWidth
+     * @return
+     */
+    public ShapeCreator setStrokeDashWidth(int strokeDashWidth) {
+        this.strokeDashWidth = strokeDashWidth;
+        return this;
+    }
+
+    /**
+     * <stroke android:dashGap=""/>
+     *
+     * @param strokeDashGap
+     * @return
+     */
+    public ShapeCreator setStrokeDashGap(int strokeDashGap) {
+        this.strokeDashGap = strokeDashGap;
+        return this;
+    }
+
+    /**
+     * <shape xmlns:android="http://schemas.android.com/apk/res/android"
+     * android:shape="">
+     *
+     * @param shape
+     * @return
+     */
+    public ShapeCreator setShape(int shape) {
+        this.shape = shape;
+        return this;
+    }
+
+    /**
+     * <gradient android:type=""/>
+     *
+     * @param gradientType
+     * @return
+     */
+    public ShapeCreator setGradientType(int gradientType) {
+        this.gradientType = gradientType;
+        return this;
+    }
+
+    /**
+     * <gradient android:angle=""/>
+     *
+     * @param gradientAngle
+     * @return
+     */
+    public ShapeCreator setGradientAngle(int gradientAngle) {
+        this.gradientAngle = gradientAngle;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * <gradient android:centerX=""/>
+     *
+     * @param gradientCenterX
+     * @return
+     */
+    public ShapeCreator setGradientCenterX(float gradientCenterX) {
+        this.gradientCenterX = gradientCenterX;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * <gradient android:centerY=""/>
+     *
+     * @param gradientCenterY
+     * @return
+     */
+    public ShapeCreator setGradientCenterY(float gradientCenterY) {
+        this.gradientCenterY = gradientCenterY;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * <gradient android:startColor=""/>
+     *
+     * @param gradientStartColor
+     * @return
+     */
+    public ShapeCreator setGradientStartColor(int gradientStartColor) {
+        this.gradientStartColor = gradientStartColor;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * <gradient android:centerColor=""/>
+     *
+     * @param gradientCenterColor
+     * @return
+     */
+    public ShapeCreator setGradientCenterColor(int gradientCenterColor) {
+        this.gradientCenterColor = gradientCenterColor;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * * <gradient android:endColor=""/>
+     *
+     * @param gradientEndColor
+     * @return
+     */
+    public ShapeCreator setGradientEndColor(int gradientEndColor) {
+        this.gradientEndColor = gradientEndColor;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * * <gradient android:gradientRadius=""/>
+     *
+     * @param gradientRadius
+     * @return
+     */
+    public ShapeCreator setGradientRadius(float gradientRadius) {
+        this.gradientRadius = gradientRadius;
+        defaultGradientType();
+        return this;
+    }
+
+    /**
+     * <size android:width="" android:height=""/>
+     *
+     * @param w
+     * @param h
+     * @return
+     */
+    public ShapeCreator setSize(int w, int h) {
+        this.width = w;
+        this.height = h;
+        return this;
+    }
+
+
+    /**
+     * 是否dp转px
+     *
+     * @param dpUnitEnabled true dp false px
+     * @return
+     */
+    public ShapeCreator setDpUnitEnabled(boolean dpUnitEnabled) {
+        this.dpUnitEnabled = dpUnitEnabled;
+        return this;
+    }
+
+    /**
+     * 是否开启交互状态
+     *
+     * @param stateEnabled true 支持 state_press="true' state_enabled="false"
+     * @return
+     */
+    public ShapeCreator setStateEnabled(boolean stateEnabled) {
+        this.stateEnabled = stateEnabled;
+        return this;
+    }
+
+    /**
+     * 文字颜色交互状态
+     *
+     * @param stateTextColorEnabled
+     * @return
+     */
+    public ShapeCreator setStateTextColorEnabled(boolean stateTextColorEnabled) {
+        this.stateTextColorEnabled = stateTextColorEnabled;
+        return this;
+    }
+
+    /**
+     * 默认颜色
+     *
+     * @param textColor
+     * @return
+     */
+    public ShapeCreator setTextColor(int textColor) {
+        this.textColor = textColor;
+        return this;
+    }
+
+    /**
+     * 按下颜色
+     *
+     * @param textPressColor
+     * @return
+     */
+    public ShapeCreator setTextPressColor(int textPressColor) {
+        this.textPressColor = textPressColor;
+        return this;
+    }
+
+    /**
+     * 禁用颜色
+     *
+     * @param textDisableColor
+     * @return
+     */
+    public ShapeCreator setTextDisableColor(int textDisableColor) {
+        this.textDisableColor = textDisableColor;
+        return this;
+    }
+
+    public void into(View view) {
+        Context context = view.getContext();
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            GradientDrawable drawable = createGradientDrawable(context, -1);
+            drawable.setUseLevel(false);
+            ViewCompat.setBackground(view, drawable);
+        } else {
+            if (!stateEnabled) {
+                GradientDrawable drawable = createGradientDrawable(context, -1);
+                drawable.setUseLevel(false);
+                ViewCompat.setBackground(view, drawable);
+            } else {
+                StateListDrawable drawable = new StateListDrawable();
+                GradientDrawable press = createGradientDrawable(context, 1);
+                press.setUseLevel(false);
+                GradientDrawable disable = createGradientDrawable(context, 2);
+                disable.setUseLevel(false);
+                GradientDrawable normal = createGradientDrawable(context, 3);
+                normal.setUseLevel(false);
+
+
+                drawable.addState(new int[]{android.R.attr.state_pressed}, press);
+                drawable.addState(new int[]{-android.R.attr.state_enabled}, disable);
+                drawable.addState(new int[]{}, normal);
+                ViewCompat.setBackground(view, drawable);
+            }
+        }
+
+        if (stateTextColorEnabled && view instanceof TextView) {
+
+            int[][] state = new int[3][];
+            state[0] = new int[]{android.R.attr.state_pressed};
+            state[1] = new int[]{-android.R.attr.state_enabled};
+            state[2] = new int[]{};
+
+            if (textColor != 0) {
+
+                if (textPressColor == 0) {
+                    textPressColor = textColor;
+                }
+
+                if (textDisableColor == 0) {
+                    textDisableColor = textColor;
+                }
+
+                ColorStateList colorStateList = new ColorStateList(state, new int[]{textPressColor, textDisableColor, textColor});
+
+                ((TextView) view).setTextColor(colorStateList);
+            }
+
+
+        }
+
+    }
+
+
+    private GradientDrawable createGradientDrawable(Context context, int type) {
+
+        GradientDrawable drawable = new GradientDrawable();
+
+        setXmlShapeType(drawable);
+        setXmlSolid(drawable, type);
+        setXmlSize(drawable, context);
+        setXmlCorners(drawable, context);
+        setXmlStroke(drawable, context, type);
+        setXmlGradient(drawable, context);
+
+
+        return drawable;
+
+    }
+
+    /**
+     * <shape
+     * android:shape='xxxx'>
+     *
+     * @param drawable
+     */
+    private void setXmlShapeType(GradientDrawable drawable) {
+        drawable.setShape(shape);
+    }
+
+    /**
+     * <corners />
+     *
+     * @param drawable
+     * @param context
+     */
+    private void setXmlCorners(GradientDrawable drawable, Context context) {
+        if (shape == RECTANGLE) {
+            //矩形可以设置圆角
+            if (cornerRadius != 0) {
+                drawable.setCornerRadius(dip2px(context, cornerRadius));
+            } else {
+                drawable.setCornerRadii(new float[]{
+                        //左上
+                        dip2px(context, cornerRadiusLT),
+                        dip2px(context, cornerRadiusLT),
+                        //右上
+                        dip2px(context, cornerRadiusRT),
+                        dip2px(context, cornerRadiusRT),
+                        //右下
+                        dip2px(context, cornerRadiusRB),
+                        dip2px(context, cornerRadiusRB),
+                        //左下
+                        dip2px(context, cornerRadiusLB),
+                        dip2px(context, cornerRadiusLB)
+                });
+            }
+        }
+    }
+
+    /**
+     * <solid/>
+     *
+     * @param drawable
+     * @param type     当stateEnabled=true,同时Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP 生效
+     *                 1:state_pressed=true
+     *                 2:state_enabled=false
+     *                 3:默认状态
+     */
+    private void setXmlSolid(GradientDrawable drawable, int type) {
+        if (!stateEnabled) {
+            drawable.setColor(solidColor);
+        } else {
+
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                int[][] state = new int[3][];
+                state[0] = new int[]{android.R.attr.state_pressed};
+                state[1] = new int[]{-android.R.attr.state_enabled};
+                state[2] = new int[]{};
+
+                ColorStateList colorStateList = new ColorStateList(state, new int[]{solidPressColor, solidDisableColor, solidColor});
+                drawable.setColor(colorStateList);
+            } else {
+                switch (type) {
+                    case 1:
+                        drawable.setColor(solidPressColor);
+                        break;
+                    case 2:
+                        drawable.setColor(solidDisableColor);
+                        break;
+                    case 3:
+                        drawable.setColor(solidColor);
+                        break;
+                }
+            }
+        }
+    }
+
+    /**
+     * <stroke/>
+     *
+     * @param drawable
+     * @param context
+     * @param type     当stateEnabled=true,同时Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP 生效
+     *                 1:state_pressed=true
+     *                 2:state_enabled=false
+     *                 3:默认状态
+     */
+    private void setXmlStroke(GradientDrawable drawable, Context context, int type) {
+
+
+        if (!stateEnabled) {
+            drawable.setStroke(dip2px(context, strokeWidth), strokeColor,
+                    dip2px(context, strokeDashWidth), dip2px(context, strokeDashGap));
+        } else {
+
+
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                int[][] state = new int[3][];
+                state[0] = new int[]{android.R.attr.state_pressed};
+                state[1] = new int[]{-android.R.attr.state_enabled};
+                state[2] = new int[]{};
+
+                ColorStateList colorStateList = new ColorStateList(state, new int[]{strokePressColor, strokeDisableColor, strokeColor});
+                drawable.setStroke(dip2px(context, strokeWidth), colorStateList,
+                        dip2px(context, strokeDashWidth), dip2px(context, strokeDashGap));
+            } else {
+                int color = solidColor;
+                switch (type) {
+                    case 1:
+                        color = strokePressColor;
+                        break;
+                    case 2:
+                        color = strokeDisableColor;
+                        break;
+                    case 3:
+                        color = strokeColor;
+                        break;
+                }
+                drawable.setStroke(dip2px(context, strokeWidth), color,
+                        dip2px(context, strokeDashWidth), dip2px(context, strokeDashGap));
+            }
+        }
+
+    }
+
+    /**
+     * <size/>
+     *
+     * @param drawable
+     * @param context
+     */
+    private void setXmlSize(GradientDrawable drawable, Context context) {
+        if (width > 0 && height > 0) {
+            drawable.setSize(dip2px(context, width), dip2px(context, height));
+        }
+    }
+
+
+    /**
+     * <gradient/>
+     *
+     * @param drawable
+     * @param context
+     */
+    private void setXmlGradient(GradientDrawable drawable, Context context) {
+        if (gradientType == -1) return;
+        if (gradientType == LINEAR_GRADIENT) {
+            drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
+        } else if (gradientType == RADIAL_GRADIENT) {
+            drawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
+        } else if (gradientType == SWEEP_GRADIENT) {
+            drawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
+        }
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            if (gradientCenterColor == 0) {
+                drawable.setColors(new int[]{gradientStartColor, gradientEndColor});
+            } else {
+                drawable.setColors(new int[]{gradientStartColor, gradientCenterColor, gradientEndColor});
+            }
+
+            GradientDrawable.Orientation mOrientation = GradientDrawable.Orientation.TOP_BOTTOM;
+            switch (gradientAngle) {
+                case 0:
+                    mOrientation = GradientDrawable.Orientation.LEFT_RIGHT;
+                    break;
+                case 45:
+                    mOrientation = GradientDrawable.Orientation.BL_TR;
+                    break;
+                case 90:
+                    mOrientation = GradientDrawable.Orientation.BOTTOM_TOP;
+                    break;
+                case 135:
+                    mOrientation = GradientDrawable.Orientation.BR_TL;
+                    break;
+                case 180:
+                    mOrientation = GradientDrawable.Orientation.RIGHT_LEFT;
+                    break;
+                case 225:
+                    mOrientation = GradientDrawable.Orientation.TR_BL;
+                    break;
+                case 270:
+                    mOrientation = GradientDrawable.Orientation.TOP_BOTTOM;
+                    break;
+                case 315:
+                    mOrientation = GradientDrawable.Orientation.TL_BR;
+                    break;
+            }
+            drawable.setOrientation(mOrientation);
+
+        } else {
+            drawable.setColor(solidColor);
+        }
+
+        drawable.setGradientCenter(gradientCenterX, gradientCenterY);
+        drawable.setGradientRadius(dip2px(context, gradientRadius));
+    }
+
+    /**
+     * 设置默认渐变类型
+     */
+    private void defaultGradientType() {
+        if (gradientType == -1) {
+            gradientType = LINEAR_GRADIENT;
+        }
+    }
+
+    private int dip2px(Context context, float dipValue) {
+        if (dpUnitEnabled) {
+            final float scale = context.getResources().getDisplayMetrics().density;
+            return (int) (dipValue * scale + 0.5f);
+        } else {
+            return (int) dipValue;
+        }
+    }
+
+}

+ 89 - 86
app/src/main/res/layout/activity_record.xml

@@ -1,127 +1,130 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout 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_height="match_parent"
-        android:layout_gravity="center"
-        android:background="@color/black">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="center"
+    android:background="@color/black">
 
     <FrameLayout
-            android:id="@+id/player_frame"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center">
+        android:id="@+id/player_frame"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_gravity="center">
 
         <com.edufound.reader.cusview.RvListJzvdStd
-                android:id="@+id/activity_record_jzvideo"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"></com.edufound.reader.cusview.RvListJzvdStd>
+            android:id="@+id/activity_record_jzvideo"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"></com.edufound.reader.cusview.RvListJzvdStd>
     </FrameLayout>
 
     <FrameLayout
-            android:layout_width="1280dp"
-            android:layout_height="720dp"
-            android:orientation="horizontal"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="h,16:9"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
+        android:layout_width="1280dp"
+        android:layout_height="720dp"
+        android:orientation="horizontal"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="h,16:9"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
 
 
         <ImageView
-                android:id="@+id/activity_record_back"
-                android:layout_width="77dp"
-                android:layout_height="77dp"
-                android:layout_marginLeft="32dp"
-                android:layout_marginTop="20dp"
-                android:src="@drawable/main_back"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent"></ImageView>
+            android:id="@+id/activity_record_back"
+            android:layout_width="77dp"
+            android:layout_height="77dp"
+            android:layout_marginLeft="32dp"
+            android:layout_marginTop="20dp"
+            android:src="@drawable/main_back"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"></ImageView>
 
         <LinearLayout
-                android:layout_width="81dp"
-                android:layout_height="121dp"
-                android:layout_gravity="right|bottom"
-                android:layout_marginRight="45dp"
-                android:layout_marginBottom="220dp"
-                android:gravity="center"
-                android:orientation="vertical">
+            android:layout_width="100dp"
+            android:layout_height="121dp"
+            android:layout_gravity="right|bottom"
+            android:layout_marginRight="45dp"
+            android:layout_marginBottom="220dp"
+            android:gravity="center|right"
+            android:orientation="vertical">
 
             <FrameLayout
-                    android:id="@+id/activity_record_demonstration"
-                    android:layout_width="70dp"
-                    android:layout_height="70dp">
+                android:id="@+id/activity_record_demonstration"
+                android:layout_width="70dp"
+                android:layout_height="70dp">
 
                 <ImageView
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:src="@drawable/to_record_bg"></ImageView>
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:src="@drawable/to_record_bg"></ImageView>
 
                 <ImageView
-                        android:id="@+id/activity_record_demonstration_icon"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:padding="10dp"
-                        android:src="@drawable/activity_record_demonstration"></ImageView>
+                    android:id="@+id/activity_record_demonstration_icon"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:padding="10dp"
+                    android:src="@drawable/activity_record_demonstration"></ImageView>
             </FrameLayout>
 
             <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="38dp"
-                    android:text="听示范"
-                    android:textColor="@color/white"
-                    android:textSize="27dp"></TextView>
+                android:layout_width="match_parent"
+                android:layout_height="38dp"
+                android:layout_gravity="center"
+                android:gravity="center|right"
+                android:maxLines="1"
+                android:text="听示范"
+                android:textColor="@color/white"
+                android:textSize="25dp"></TextView>
         </LinearLayout>
 
         <LinearLayout
-                android:layout_width="129dp"
-                android:layout_height="wrap_content"
-                android:layout_gravity="right|bottom"
-                android:layout_marginRight="17dp"
-                android:layout_marginBottom="15dp"
-                android:gravity="center"
-                android:orientation="vertical">
+            android:layout_width="129dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="right|bottom"
+            android:layout_marginRight="17dp"
+            android:layout_marginBottom="15dp"
+            android:gravity="center"
+            android:orientation="vertical">
 
             <FrameLayout
-                    android:id="@+id/activity_record_controll"
-                    android:layout_width="129dp"
-                    android:layout_height="129dp">
+                android:id="@+id/activity_record_controll"
+                android:layout_width="129dp"
+                android:layout_height="129dp">
 
                 <ImageView
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:src="@drawable/to_record_bg"></ImageView>
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:src="@drawable/to_record_bg"></ImageView>
 
                 <ImageView
 
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:padding="10dp"
-                        android:src="@drawable/to_record_icon"></ImageView>
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:padding="10dp"
+                    android:src="@drawable/to_record_icon"></ImageView>
 
                 <ImageView
-                        android:id="@+id/activity_record_mike_icon"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:layout_margin="38dp"
-                        android:background="@drawable/to_record_icon_mike"></ImageView>
+                    android:id="@+id/activity_record_mike_icon"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:layout_margin="38dp"
+                    android:background="@drawable/to_record_icon_mike"></ImageView>
             </FrameLayout>
 
             <TextView
-                    android:id="@+id/activity_record_mike_status"
-                    android:layout_width="match_parent"
-                    android:layout_height="38dp"
-                    android:layout_gravity="center"
-                    android:gravity="center"
-                    android:text="开始朗读"
-                    android:textColor="@color/white"
-                    android:textSize="27dp"></TextView>
+                android:id="@+id/activity_record_mike_status"
+                android:layout_width="match_parent"
+                android:layout_height="38dp"
+                android:layout_gravity="center"
+                android:gravity="center"
+                android:text="开始朗读"
+                android:textColor="@color/white"
+                android:textSize="27dp"></TextView>
         </LinearLayout>
     </FrameLayout>
 

+ 2 - 2
app/src/main/res/layout/activity_saffloer.xml

@@ -172,8 +172,8 @@
             android:layout_gravity="right|top"
             android:layout_marginTop="20dp"
             android:layout_marginRight="55dp"
-
-            android:src="@drawable/event_pay_into"></ImageView>
+            android:src="@drawable/event_pay_into"
+            android:visibility="invisible"></ImageView>
 
     </FrameLayout>
 

+ 4 - 14
app/src/main/res/layout/activity_web.xml

@@ -5,22 +5,12 @@
     android:layout_height="match_parent"
     android:background="@color/white">
 
-    <androidx.constraintlayout.widget.ConstraintLayout
+
+    <FrameLayout
+        android:id="@+id/web_frame"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white">
-
-        <FrameLayout
-            android:id="@+id/web_frame"
-            android:layout_width="1280dp"
-            android:layout_height="720dp"
-            android:orientation="horizontal"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="h,16:9"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"></FrameLayout>
-    </androidx.constraintlayout.widget.ConstraintLayout>
+        android:background="@color/white"></FrameLayout>
 
 
     <ImageView

+ 12 - 1
app/src/main/res/layout/adapter_item_slidevideo.xml

@@ -51,5 +51,16 @@
         android:layout_gravity="center|bottom"
         android:layout_marginRight="150dp"
         android:layout_marginBottom="150dp"
-        android:background="@color/yellow"></ImageView>
+        android:background="@color/yellow"
+        android:visibility="invisible"></ImageView>
+
+    <LinearLayout
+        android:id="@+id/adapter_item_slidevideo_tagLayout"
+        android:layout_width="wrap_content"
+        android:layout_height="50dp"
+        android:layout_marginLeft="5dp"
+        android:layout_marginTop="5dp"
+        android:orientation="horizontal">
+
+    </LinearLayout>
 </FrameLayout>