Commit 020e3ff9 by mReturn

red packet

parent 1a11d91d
Showing with 2089 additions and 172 deletions
......@@ -74,7 +74,7 @@
<!-- </provider> -->
<activity
android:name=".SplashActivity"
android:name=".InitializeActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
......@@ -144,9 +144,9 @@
</intent-filter>
</receiver>
<activity
android:name=".InitializeActivity"
android:screenOrientation="portrait" />
<!--<activity-->
<!--android:name=".InitializeActivity"-->
<!--android:screenOrientation="portrait" />-->
<activity
android:name=".ui.SettingActivity"
android:screenOrientation="portrait" />
......
......@@ -5,32 +5,26 @@ import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.bigfish.databinding.ActivityInitializeMainBinding;
import com.dayu.bigfish.ui.MainActivity;
import com.dayu.bigfish.ui.ManagerActivity;
import com.dayu.common.Constants;
import com.dayu.event.UserInfo;
import com.dayu.managercenter.data.Spu;
import com.dayu.managercenter.ui.activity.ServiceStationActivity;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.ui.activity.SmsLoginActivity;
import com.dayu.utils.AppUtils;
import com.dayu.utils.LogUtils;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.SPUtils;
import com.dayu.utils.StationManager;
import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog;
import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;
import com.megvii.idcardlib.util.Constant;
import com.umeng.analytics.MobclickAgent;
import java.util.concurrent.TimeUnit;
......@@ -49,7 +43,17 @@ public class InitializeActivity extends DataBindingActivity<ActivityInitializeMa
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void initView() {
if (!isTaskRoot()) {
finish();
return;
}
if (Constants.IS_DEBUG){
AppUtils.initEnv();
}else {
......@@ -64,8 +68,9 @@ public class InitializeActivity extends DataBindingActivity<ActivityInitializeMa
MPermissionUtils.requestPermissionsResult(mActivity, SDK_PERMISSION_REQUEST, mPerArr, new MPermissionUtils.OnPermissionListener() {
@Override
public void onPermissionGranted() {
Observable.timer(1000, TimeUnit.MILLISECONDS)
Observable.timer(600, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
// .subscribe(aLong -> {});
.subscribe(aLong -> doJump());
}
......
......@@ -211,10 +211,14 @@ public class MyApplication extends BaseApplication {
private void startLocationService() {
// startService(new Intent(mContext, LocationService.class));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(mContext, LocationService.class));
} else {
startService(new Intent(mContext, LocationService.class));
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(mContext, LocationService.class));
} else {
startService(new Intent(mContext, LocationService.class));
}
} catch (Exception e) {
e.printStackTrace();
}
}
......
......@@ -115,14 +115,14 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
MobclickAgent.onEvent(BaseApplication.getContext(), "push_offline_check_order_detail");
}
initUser();
LiveUtils.initUser(mUserId,mUserInfo.getAccountName(),mUserInfo.getHeaderImg());
LiveUtils.initUser(mUserId, mUserInfo.getAccountName(), mUserInfo.getHeaderImg());
MobclickAgent.onEvent(this, "go_home");
saleFragment = HomeSaleFragment.newInstance();
secondFragment = HomeOrderFragment.newInstance();
learnFragment = new HomeLearnFragment();
fourFragment = HomeUserFragment.newInstance();
mFragments = new Fragment[]{saleFragment, secondFragment, learnFragment,fourFragment};
mTabs = new TextView[]{mBind.tabSale, mBind.tabSecond,mBind.tabLearn, mBind.tabFour};
mFragments = new Fragment[]{saleFragment, secondFragment, learnFragment, fourFragment};
mTabs = new TextView[]{mBind.tabSale, mBind.tabSecond, mBind.tabLearn, mBind.tabFour};
addFragment();
initListener();
doAction(getIntent());
......@@ -148,7 +148,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
private void initListener() {
mBind.tabSale.setOnClickListener(o -> showHideFragment(0, mPosition));
mBind.tabSecond.setOnClickListener(o -> {
if (mPosition != 1){
if (mPosition != 1) {
showHideFragment(1, mPosition);
int detectSatus = UserManager.getInstance().getUser().getDetectStatus();
if (detectSatus == 2 || detectSatus == 3) {
......@@ -275,6 +275,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
mSaleBadgeView.setText("99+");
}
}
@Subscribe
public void changeLearnNum(LearnTabNumEvent event) {
if (event.num <= 0)
......@@ -504,9 +505,14 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
showLoginDialog();
}
// @Subscribe
// public void getRedPacketEvent(GetRedPacketDataEvent event) {
// getRedPacketsData();
// }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
}
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item>
<bitmap
android:gravity="top"
android:scaleType="centerCrop"
android:src="@drawable/ic_splash"
android:tileMode="disabled" />
</item>
</layer-list>
\ No newline at end of file
......@@ -3,6 +3,8 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:visibility="gone"
android:id="@+id/rl_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
......@@ -14,13 +16,51 @@
android:visibility="gone"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.4"
>
<ImageView
android:id="@+id/iv_logo"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:src="@drawable/icon_app_logo"
android:visibility="visible" />
</RelativeLayout>
<View
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="0.6"
/>
</LinearLayout>
<ImageView
android:id="@+id/start_pager_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_splash"
android:scaleType="fitStart"
/>
<TextView
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/common_text_color"
android:textSize="16sp"
android:text="北京大鱼创想科技有限公司"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@mipmap/bg_splash"
android:visibility="visible" />
android:layout_marginBottom="20dp"
/>
</RelativeLayout>
</layout>
\ No newline at end of file
<resources>
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowBackground">@mipmap/bg_splash</item>
<!--<item name="android:windowBackground">@mipmap/bg_splash</item>-->
<!--<item name="android:windowBackground">@drawable/ic_splash</item>-->
<item name="android:windowBackground">@drawable/bg_splash_style</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
......
......@@ -165,7 +165,7 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
public void showRedPackDialog(List<RedPacketBean> list) {
if (list != null && list.size() > 0) {
RedPacketsDialog redPacketsDialog = RedPacketsDialog.getInstance();
redPacketsDialog.show(this, list, new RedPacketsDialog.onItemClickListener() {
redPacketsDialog.show(this, list, 0, new RedPacketsDialog.onItemClickListener() {
@Override
public void onOpenClick(int actyId) {
openRedPacket(redPacketsDialog, actyId);
......@@ -188,6 +188,7 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
.subscribe(mPresenter.baseObserver(openData -> {
OpenRedPacketBean openBean = (OpenRedPacketBean) openData;
if (openBean != null) {
showDialog();
Api.getService(APIService.class).getUserBankInfo(mUserId).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(data -> {
BankInfoBean bankInfoBean = (BankInfoBean) data;
......@@ -242,15 +243,21 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
@Subscribe
public void getRedPacketEvent(GetRedPacketDataEvent event) {
getRedPacketsData();
getRedPacketsData(event.force);
}
protected void getRedPacketsData() {
getRedPacketsData(false);
}
@SuppressWarnings("unchecked")
protected void getRedPacketsData() {
protected void getRedPacketsData(boolean force) {
LogUtil.e("app_front " + this.getLocalClassName() + " " + AppManager.getInstance().currentActivity().getLocalClassName());
if (!this.getLocalClassName().equals(AppManager.getInstance().currentActivity().getLocalClassName()))
if (!force && !this.getLocalClassName().equals(AppManager.getInstance().currentActivity().getLocalClassName()))
return;
if (force && !this.getLocalClassName().contains("MainActivity"))
return;
initUser();
Api.getService(com.dayu.base.api.APIService.class).getRedPacketList(mUserId).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver((datas -> {
......
......@@ -33,44 +33,46 @@ public class Constants {
public final static String PATH_USER_REWARD= "/userCenter/user_reward";
public static final String PROGRAM_PATH = "pages/mallDetail/main?goodsId=gid&userId=uid&type=1"; //小程序路径
public static final String LEAEN_PROGRAM_PATH = " /pages/shareVideo/main?type=_type&id="; //课程视频小程序路径
public static final String INVITE_NEW_SHARE_URL = "http://app.dl.kf.ai/ext/#/shareMaster?code="; //邀请新人分享链接
public static final String INVITE_NEW_SHARE_URL_BUSINESS = "http://app.dl.kf.ai/ext/#/merchants?code="; //邀请商家分享链接
// public static String VIDEO_SHARE_URL = "http://app.dl.kf.ai/ext/#/shareVideo?type=_type&id="; //学习视频分享链接 type(课程: course 直播: live)
public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
/**
* dev环境配置.
*/
public static String ENVIROMENT = "debug";
public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
public static String BASE_URL = "http://47.94.101.239:3112";
public static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
public static String CHECK_MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manyServiceResult";
public static String MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manySop";
public static String WEB_SOP_DETAIL = "http://47.94.101.239:9004/#/sopdetail";
public static String WEB_ZHI_SHI = "http://47.94.101.239:9004/#/detail";
public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=dev/video";
public static final boolean IS_DEBUG = true;
public static final boolean CAN_CHANGE_ENV = true; //是否显示切换开发环境菜单
// public static String ENVIROMENT = "debug";
// public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
// public static String BASE_URL = "http://47.94.101.239:3112";
// public static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
// public static String CHECK_MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manyServiceResult";
// public static String MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manySop";
// public static String WEB_SOP_DETAIL = "http://47.94.101.239:9004/#/sopdetail";
// public static String WEB_ZHI_SHI = "http://47.94.101.239:9004/#/detail";
// public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
// public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=dev/video";
// public static final boolean IS_DEBUG = true;
// public static final boolean CAN_CHANGE_ENV = true; //是否显示切换开发环境菜单
// public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
/**
* uat测试环境配置.
*/
// public static String ENVIROMENT = "uat";
// public static int LOG_LEVEL = LogUtils.LEVEL_ALL;
// public static String BASE_URL = "http://47.95.223.6:3112";
// public static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
// public static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
// public static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
// public static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
// public static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
// public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
// public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=test/video";
// public static final boolean IS_DEBUG = true;
// public static final boolean CAN_CHANGE_ENV = false; //是否显示切换开发环境菜单
public static String ENVIROMENT = "uat";
public static int LOG_LEVEL = LogUtils.LEVEL_ALL;
public static String BASE_URL = "http://47.95.223.6:3112";
public static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
public static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
public static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
public static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
public static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=test/video";
public static final boolean IS_DEBUG = true;
public static final boolean CAN_CHANGE_ENV = false; //是否显示切换开发环境菜单
public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
/**
......@@ -88,6 +90,8 @@ public class Constants {
// public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=online/video";
// public static final boolean IS_DEBUG = false;
// public static final boolean CAN_CHANGE_ENV = false; //是否显示切换开发环境菜单
// public static String VIDEO_SHARE_URL = "http://app.dl.kf.ai/ext/#/shareVideo?type=_type&id="; //学习视频分享链接 type(课程: course 直播: live)
/**
* 统一配置.
......
package com.dayu.event;
public class GetRedPacketDataEvent {
public boolean force = false;
public GetRedPacketDataEvent() {
}
public GetRedPacketDataEvent(boolean force) {
this.force = force;
}
}
......@@ -333,18 +333,29 @@ public class CommonUtils {
**/
public static void shareProgram(Activity activity, String imgUrl, String title, String description,
int uid, int gid, SHARE_MEDIA platform, UMShareListener callBack) {
String path = Constants.PROGRAM_PATH.replace("uid", uid + "").replace("gid", gid + "");
shareProgramPath(activity,imgUrl,title,description,path,platform,callBack);
}
public static void shareProgramPath(Activity activity, String imgUrl, String title, String description,
String path, SHARE_MEDIA platform, UMShareListener callBack) {
MobclickAgent.onEvent(activity, "share");
//兼容低版本的网页链接
String mUrl = "http://www.kf.ai/";
UMMin umMin = new UMMin(mUrl);
// 小程序消息封面图片
umMin.setThumb(new UMImage(activity, imgUrl));
if (TextUtils.isEmpty(imgUrl)) {
umMin.setThumb(new UMImage(activity, Constants.AppLogoUrl));
} else {
umMin.setThumb(new UMImage(activity, imgUrl));
}
// 小程序消息title
umMin.setTitle(title);
// 小程序消息描述
umMin.setDescription(description);
//小程序页面路径
umMin.setPath(Constants.PROGRAM_PATH.replace("uid", uid + "").replace("gid", gid + ""));
umMin.setPath(path);
// 小程序原始id,在微信平台查询
umMin.setUserName("gh_0e5cd0cdbf46");
if ("uat".equals(Constants.ENVIROMENT))
......@@ -377,4 +388,15 @@ public class CommonUtils {
}
}
}
/**
* 获取视频第一帧图片
* @param url
* @return
*/
public static String getVideoImg(String url){
if (TextUtils.isEmpty(url))
return "";
return url.replace("http:","https:")+"?x-oss-process=video/snapshot,t_0,f_jpg,ar_auto";
}
}
......@@ -78,7 +78,7 @@ public class NetworkConnectChangedReceiver extends BroadcastReceiver {
}
} else {
ToastUtils.showShortToast(BaseApplication.getContext().getString(R.string.net_not_connect));
// ToastUtils.showShortToast(BaseApplication.getContext().getString(R.string.net_not_connect));
}
}
}
......
......@@ -154,7 +154,7 @@ public class ToastUtils {
* @param text 文本
*/
public static void showShortToast(CharSequence text) {
showToast(text, Toast.LENGTH_SHORT);
showToastSafe(text, Toast.LENGTH_SHORT);
}
/**
......@@ -192,7 +192,7 @@ public class ToastUtils {
* @param text 文本
*/
public static void showLongToast(CharSequence text) {
showToast(text, Toast.LENGTH_LONG);
showToastSafe(text, Toast.LENGTH_LONG);
}
/**
......@@ -231,7 +231,8 @@ public class ToastUtils {
* @param duration 显示时长
*/
private static void showToast(@StringRes int resId, int duration) {
showToast(UIUtils.getContext().getResources().getText(resId).toString(), duration);
// showToast(UIUtils.getContext().getResources().getText(resId).toString(), duration);
showToastSafe(UIUtils.getContext().getResources().getText(resId).toString(), duration);
}
/**
......@@ -242,7 +243,8 @@ public class ToastUtils {
* @param args 参数
*/
private static void showToast(@StringRes int resId, int duration, Object... args) {
showToast(String.format(UIUtils.getContext().getResources().getString(resId), args), duration);
// showToast(String.format(UIUtils.getContext().getResources().getString(resId), args), duration);
showToastSafe(String.format(UIUtils.getContext().getResources().getString(resId), args), duration);
}
/**
......@@ -253,7 +255,8 @@ public class ToastUtils {
* @param args 参数
*/
private static void showToast(String format, int duration, Object... args) {
showToast(String.format(format, args), duration);
// showToast(String.format(format, args), duration);
showToastSafe(String.format(format, args), duration);
}
/**
......@@ -272,6 +275,20 @@ public class ToastUtils {
}
sToast.show();
}
/**
* 安全的显示吐司
*
* @param text 文本
* @param duration 显示时长
*/
private static void showToastSafe(CharSequence text, int duration) {
sHandler.post(new Runnable() {
@Override
public void run() {
showToast(text,duration);
}
});
}
/**
* 取消吐司显示
......
......@@ -4,6 +4,7 @@ import android.text.TextUtils;
import com.dayu.common.Constants;
import com.dayu.event.UserInfo;
import com.dayu.widgets.RedPacketsDialog;
import com.google.gson.Gson;
/**
......@@ -57,6 +58,7 @@ public class UserManager {
SPUtils.remove("token");
SPUtils.remove("USER_IDENTITY");
SPUtils.remove("bank_addr_info");
RedPacketsDialog.reset();
}
......
......@@ -92,7 +92,7 @@ public class JZMediaIjk extends JZMediaInterface implements IMediaPlayer.OnPrepa
ijkMediaPlayer.prepareAsync();
ijkMediaPlayer.setSurface(new Surface(jzvd.textureView.getSurfaceTexture()));
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
}
});
......
......@@ -2,7 +2,6 @@ package com.dayu.widgets;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.media.MediaPlayer;
import android.view.Gravity;
import android.view.View;
......@@ -13,6 +12,7 @@ import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
......@@ -32,12 +32,12 @@ public class RedPacketsDialog {
private TextView tvMoney;
private ImageView ivIcon;
private ImageView ivOpen;
private ImageView ivClose;
private ImageButton ibClose;
private Dialog mDialog;
private Button btnOperate;
private boolean hasBankIfno;
private Context context;
private List<RedPacketBean>redPacketList;
private Activity context;
private List<RedPacketBean> redPacketList;
private int index;
WeakHandler weakHandler = new WeakHandler();
boolean isShowing;
......@@ -54,95 +54,125 @@ public class RedPacketsDialog {
return instance;
}
public static void reset() {
instance = null;
}
public void show(final Activity activity, List<RedPacketBean>redPacketList, onItemClickListener listener) {
if (isShowing || redPacketList.size()<=index)
public void show(final Activity activity, List<RedPacketBean> redPacketList, int pos, onItemClickListener listener) {
index = pos;
if (isShowing || redPacketList.size() <= index)
return;
this.redPacketList = redPacketList;
context = activity;
View mView = View.inflate(activity, R.layout.dialog_red_packets, null);
tvName = mView.findViewById(R.id.tv_name);
tvMoney = mView.findViewById(R.id.tv_money);
ivIcon = mView.findViewById(R.id.iv_icon);
ivOpen = mView.findViewById(R.id.iv_open);
ivClose = mView.findViewById(R.id.iv_close);
btnOperate = mView.findViewById(R.id.btn_operate);
if (redPacketList.size()>index)
if (mDialog == null || tvName == null)
initDialog();
if (redPacketList.size() > index)
tvMoney.setText(redPacketList.get(index).getActivityTitle());
ivIcon.setImageResource(R.drawable.icon_app_logo);
ivOpen.setVisibility(View.VISIBLE);
btnOperate.setVisibility(View.GONE);
mDialog = new Dialog(activity, R.style.CustomDialog);
mDialog.setContentView(mView);
Window window = mDialog.getWindow();
WindowManager.LayoutParams wl = window.getAttributes();
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
wl.gravity = Gravity.CENTER;
mDialog.onWindowAttributesChanged(wl);
mDialog.show();
isShowing = true;
mDialog.setCanceledOnTouchOutside(false);
mDialog.setCancelable(false);
rotateAnimation = AnimationUtils.loadAnimation(activity, R.anim.rotate_anim);
LinearInterpolator lin = new LinearInterpolator();
rotateAnimation.setInterpolator(lin);
ivClose.setOnClickListener(view ->{
setListener(listener);
// ivIcon.setOnClickListener(view -> playAudio());
}
private void setListener(onItemClickListener listener) {
ibClose.setOnClickListener(view -> {
mDialog.dismiss();
isShowing = false;
if (ivOpen.getVisibility() == View.GONE)
if (ivOpen.getVisibility() == View.GONE) {
weakHandler.postDelayed(() -> {
show(activity,redPacketList,listener);
},500);
} );
show(context, redPacketList, index, listener);
}, 500);
} else {
index = 0;
}
});
ivOpen.setOnClickListener(view -> {
if (listener != null && redPacketList.size()>index)
if (listener != null && redPacketList.size() > index)
listener.onOpenClick(redPacketList.get(index).getId());
// ivOpen.startAnimation(rotateAnimation);
});
btnOperate.setOnClickListener(view -> {
if (hasBankIfno){
ARouter.getInstance().build(Constants.PATH_USER_REWARD).withInt("type",4).navigation();
}else {
if (hasBankIfno) {
ARouter.getInstance().build(Constants.PATH_USER_REWARD).withInt("type", 4).navigation();
} else {
ARouter.getInstance().build(Constants.PATH_EDIT_BANK).navigation();
}
mDialog.dismiss();
isShowing = false;
if (ivOpen.getVisibility() == View.GONE)
weakHandler.postDelayed(() -> {
show(activity,redPacketList,listener);
},500);
show(context, redPacketList, index, listener);
}, 500);
});
}
private void initDialog() {
View mView = View.inflate(context, R.layout.dialog_red_packets, null);
tvName = mView.findViewById(R.id.tv_name);
tvMoney = mView.findViewById(R.id.tv_money);
ivIcon = mView.findViewById(R.id.iv_icon);
ivOpen = mView.findViewById(R.id.iv_open);
ibClose = mView.findViewById(R.id.ib_close);
btnOperate = mView.findViewById(R.id.btn_operate);
mDialog = new Dialog(context, R.style.CustomDialog);
mDialog.setContentView(mView);
Window window = mDialog.getWindow();
WindowManager.LayoutParams wl = window.getAttributes();
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
wl.gravity = Gravity.CENTER;
mDialog.onWindowAttributesChanged(wl);
mDialog.setCanceledOnTouchOutside(false);
mDialog.setCancelable(false);
}
public void openSuccess(boolean hasBankIfno, OpenRedPacketBean data) {
if (tvMoney != null) {
ivOpen.clearAnimation();
if (context != null){
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.red_packets);
mediaPlayer.setVolume(0.05f, 0.05f);
mediaPlayer.start();
}
playAudio();
this.hasBankIfno = hasBankIfno;
tvMoney.setText("中奖金额" + data.getBonusPrice() + "元");
GlideImageLoader.load(context,ivIcon,data.getPrizeUrl(),R.drawable.icon_app_logo);
if (data.getStatus() == 1){
tvMoney.setText("中奖金额" + data.getBonusPrice() + "元");
}else {
tvMoney.setText("很可惜,您未中奖");
}
GlideImageLoader.load(context, ivIcon, data.getPrizeUrl(), R.drawable.icon_app_logo);
tvMoney.setVisibility(View.VISIBLE);
ivOpen.setVisibility(View.GONE);
btnOperate.setVisibility(View.VISIBLE);
btnOperate.setText(hasBankIfno?"去查看":"去提现");
index+=1;
btnOperate.setText(hasBankIfno ? "去查看" : "去提现");
index += 1;
}
}
private void playAudio() {
if (context != null) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.red_packets);
mediaPlayer.setVolume(1.0f, 1.0f);
mediaPlayer.start();
}
}
public interface onItemClickListener {
void onOpenClick(int actyId);
}
}
......@@ -63,14 +63,14 @@
</LinearLayout>
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<ImageButton
android:background="@color/transparent"
android:id="@+id/ib_close"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_red_packet_close"
android:layout_alignLeft="@+id/ll_bg"
android:layout_alignTop="@+id/ll_bg"
android:layout_margin="10dp"
/>
<Button
android:visibility="gone"
......
......@@ -5,8 +5,8 @@ buildscript {
ext.build_tools_version = "27.0.3"
ext.min_sdk_version = 17
ext.target_sdk_version = 26
ext.version_code = 257
ext.verson_name = "2.5.7"
ext.version_code = 259
ext.verson_name = "2.5.9"
ext.gradle_version = '3.1.4'
ext.isReleaseMinify = false
ext.isDebugMinify = false
......
......@@ -31,10 +31,12 @@ public class LearnAdapter extends CoreAdapter<CommonLearnBean, ItemCommonLearnBi
protected void onBind(ItemCommonLearnBinding holder, CommonLearnBean item, int position) {
super.onBind(holder, item, position);
holder.tvTitle.setText(item.getName());
holder.tvLooks.setText(item.getLearners() + "");
holder.tvLooks.setText((item.getLearners()+item.getShareWatchs()) + "");
holder.tvLike.setText(item.getPoints() + "");
holder.tvShares.setText(item.getShares()+"");
holder.tvDate.setText("发布时间 " + CommonUtils.getYearData(item.getCreateTime()));
holder.ibShare.setOnClickListener(view -> mPresenter.shareVideo(item));
holder.tvShares.setOnClickListener(view -> mPresenter.shareVideo(item));
holder.ivLike.setOnClickListener(view -> mPresenter.likeVideo(item));
holder.tvLike.setOnClickListener(view -> mPresenter.likeVideo(item));
if (type == 2) {
......
......@@ -48,6 +48,25 @@ public class CommonLearnBean {
private int pointStatus;
private int firstUrl;
private boolean showCover = true;
private int shares;
private int shareWatchs;
public int getShareWatchs() {
return shareWatchs;
}
public void setShareWatchs(int shareWatchs) {
this.shareWatchs = shareWatchs;
}
public int getShares() {
return shares;
}
public void setShares(int shares) {
this.shares = shares;
}
public boolean isShowCover() {
return showCover;
......
......@@ -39,6 +39,15 @@ public class CourseDeatilBean implements Serializable {
private int status;
private int type;
private String url;
private int shares;
public int getShares() {
return shares;
}
public void setShares(int shares) {
this.shares = shares;
}
public String getBrief() {
return brief;
......
......@@ -54,6 +54,24 @@ public class LiveBackVideosBean implements Serializable {
private String liveErrMsg;
private String liveStreamPic;
private int pointStatus;
private int shares;
private int shareWatchs;
public int getShareWatchs() {
return shareWatchs;
}
public void setShareWatchs(int shareWatchs) {
this.shareWatchs = shareWatchs;
}
public int getShares() {
return shares;
}
public void setShares(int shares) {
this.shares = shares;
}
public int getPointStatus() {
return pointStatus;
......
package com.dayu.learncenter.presenter.pubcourse;
import com.dayu.base.ui.presenter.BaseListPresenter;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
import com.dayu.learncenter.api.bean.CourseDeatilBean;
......@@ -8,6 +7,8 @@ import com.dayu.learncenter.api.bean.CourseDeatilBean;
public interface PubCourseContract {
interface View extends BaseView {
void setDetailData(CourseDeatilBean data);
void pubSuccess();
}
abstract class Presenter extends BasePresenter<View> {
......
......@@ -4,14 +4,12 @@ import android.text.TextUtils;
import com.dayu.base.api.Api;
import com.dayu.base.api.BaseApiFactory;
import com.dayu.event.GetRedPacketDataEvent;
import com.dayu.event.UserInfo;
import com.dayu.learncenter.R;
import com.dayu.learncenter.api.LearnService;
import com.dayu.learncenter.api.data.EditCourseData;
import com.dayu.learncenter.api.data.PubCourseData;
import com.dayu.learncenter.event.CourseModifyEvent;
import com.dayu.learncenter.event.CoursePubEvent;
import com.dayu.utils.CommonUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UserManager;
......@@ -105,9 +103,7 @@ public class PubCoursePresenter extends PubCourseContract.Presenter {
.subscribe(baseObserver(success -> {
if (success) {
ToastUtils.showShortToast(R.string.pub_course_success);
mView.dumpBack();
EventBus.getDefault().post(new CoursePubEvent());
EventBus.getDefault().post(new GetRedPacketDataEvent());
mView.pubSuccess();
} else {
ToastUtils.showShortToast(R.string.pub_course_fail);
}
......
......@@ -67,6 +67,7 @@ public class CourseDetailActivity extends BaseActivity<SImplePresenter, Activity
mBind.titleBack.setOnClickListener(v -> dumpBack());
mBind.ivLike.setOnClickListener(v -> pointVideo());
mBind.ibShare.setOnClickListener(v -> shareVideo());
mBind.tvShares.setOnClickListener(v -> shareVideo());
courseId = getBundle().getInt(Constants.ID, 0);
showDialog();
initData();
......@@ -131,6 +132,7 @@ public class CourseDetailActivity extends BaseActivity<SImplePresenter, Activity
steVideoListener();
mBind.tvLooks.setText(data.getLearners() + "");
mBind.tvLike.setText(pointNum + "");
mBind.tvShares.setText(data.getShares()+"");
if (data.getCoursePointsVO() != null && data.getCoursePointsVO().getPointStatus() == 1) {
mBind.ivLike.setImageResource(R.drawable.icon_like_red);
isPointed = true;
......@@ -229,6 +231,10 @@ public class CourseDetailActivity extends BaseActivity<SImplePresenter, Activity
//发送
mBind.btnSend.setOnClickListener(v -> {
if (courseDetail == null){
initData();
return;
}
MobclickAgent.onEvent(mActivity, "leaveMessage_learningClass");
String content = mBind.edtComment.getText().toString();
if (TextUtils.isEmpty(content)) return;
......
......@@ -170,6 +170,11 @@ public class EditCourseActivity extends BaseActivity<PubCoursePresenter, Activit
}
}
@Override
public void pubSuccess() {
}
//选中视频弹框
private void showVideoDailog() {
List<String> list = new ArrayList<>();
......
......@@ -3,24 +3,21 @@ package com.dayu.learncenter.ui.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.activity.CameraActivity;
import com.dayu.base.ui.presenter.SImplePresenter;
import com.dayu.common.Constants;
import com.dayu.event.GetRedPacketDataEvent;
import com.dayu.learncenter.R;
import com.dayu.learncenter.api.bean.CourseDeatilBean;
import com.dayu.learncenter.api.data.PubCourseData;
import com.dayu.learncenter.databinding.ActivityPubCourseBinding;
import com.dayu.learncenter.event.CoursePubEvent;
import com.dayu.learncenter.presenter.pubcourse.PubCourseContract;
import com.dayu.learncenter.presenter.pubcourse.PubCoursePresenter;
import com.dayu.utils.CommonUtils;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.MediaChooseUtils;
import com.dayu.utils.ToastUtils;
......@@ -30,6 +27,8 @@ import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.entity.LocalMedia;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
......@@ -220,4 +219,11 @@ public class PubCourseActivity extends BaseActivity<PubCoursePresenter, Activity
}
@Override
public void pubSuccess() {
finish();
EventBus.getDefault().post(new CoursePubEvent());
EventBus.getDefault().post(new GetRedPacketDataEvent(true));
}
}
......@@ -63,7 +63,8 @@ public class CommonLearnFragment extends BaseFragment<CommonLearnPresenter, Frag
@Override
protected void lazyLoad() {
super.lazyLoad();
mPresenter.refresh();
if (mPresenter != null)
mPresenter.refresh();
}
@Override
......@@ -174,17 +175,18 @@ public class CommonLearnFragment extends BaseFragment<CommonLearnPresenter, Frag
@Override
public void shareVideo(CommonLearnBean item) {
String url = Constants.VIDEO_SHARE_URL.replace("_type","course")+item.getId();
String url = Constants.VIDEO_SHARE_URL.replace("_type", "course") + item.getId();
WechatShareDialog.getInstance().showBottomDialog(mActivity, pos -> {
if (pos == 0){
CommonUtils.shareUrl(mActivity,url,"",item.getName(),item.getBrief(),SHARE_MEDIA.WEIXIN,null);
AddShareRecordData data = new AddShareRecordData(mUserId,mUserInfo.getAccountName(),
"微信",item.getId(),1);
if (pos == 0) {
String path = Constants.LEAEN_PROGRAM_PATH.replace("_type","course")+item.getId();
CommonUtils.shareProgramPath(mActivity, CommonUtils.getVideoImg(item.getUrl()), item.getName(), item.getBrief(),path, SHARE_MEDIA.WEIXIN, null);
AddShareRecordData data = new AddShareRecordData(mUserId, mUserInfo.getAccountName(),
"微信", item.getId(), 1);
addShareRecord(data);
}else {
CommonUtils.shareUrl(mActivity,url,"",item.getName(),item.getBrief(),SHARE_MEDIA.WEIXIN_CIRCLE,null);
AddShareRecordData data = new AddShareRecordData(mUserId,mUserInfo.getAccountName(),
"朋友圈",item.getId(),1);
} else {
CommonUtils.shareUrl(mActivity, url, CommonUtils.getVideoImg(item.getUrl()), item.getName(), item.getBrief(), SHARE_MEDIA.WEIXIN_CIRCLE, null);
AddShareRecordData data = new AddShareRecordData(mUserId, mUserInfo.getAccountName(),
"朋友圈", item.getId(), 1);
addShareRecord(data);
}
});
......@@ -199,7 +201,7 @@ public class CommonLearnFragment extends BaseFragment<CommonLearnPresenter, Frag
Api.getService(LearnService.class).pointCourse(item.getId(), mUserId, type).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(success -> {
if (success && mAdapter != null) {
item.setPoints(type == 1?item.getPoints()+1:item.getPoints()-1);
item.setPoints(type == 1 ? item.getPoints() + 1 : item.getPoints() - 1);
if (type == 1)
EventBus.getDefault().post(new GetRedPacketDataEvent());
item.setPointStatus(type);
......
......@@ -174,12 +174,14 @@ public class LiveListFragment extends BaseFragment<SImplePresenter, FragmentLive
ImageView ivLike = helper.getView(R.id.iv_like);
ivLike.setImageResource(item.getPointStatus() == 1 ? R.drawable.icon_like_red : R.drawable.icon_like_gray);
helper.setText(R.id.tv_title, item.getTitle());
helper.setText(R.id.tv_looks, item.getPlayBackNum() + "");
helper.setText(R.id.tv_looks, (item.getPlayBackNum()+item.getShareWatchs()) + "");
helper.setText(R.id.tv_like, item.getPointNum() + "");
helper.setText(R.id.tv_shares, item.getShares() + "");
ivLike.setOnClickListener(v -> pointBackVideo(item));
helper.setOnClickListener(R.id.ib_share, v ->shareBackVideo(item));
helper.setOnClickListener(R.id.tv_shares, v ->shareBackVideo(item));
ImageView ivCover = helper.getView(R.id.iv_cover);
GlideImageLoader.load(mActivity, ivCover, item.getLiveStreamPic(), R.drawable.icon_video_default);
ivCover.setOnClickListener(v->{
......@@ -251,7 +253,8 @@ public class LiveListFragment extends BaseFragment<SImplePresenter, FragmentLive
String url = Constants.VIDEO_SHARE_URL.replace("_type", "live") + item.getId();
WechatShareDialog.getInstance().showBottomDialog(mActivity, pos -> {
if (pos == 0){
CommonUtils.shareUrl(mActivity,url,item.getLiveStreamPic(),item.getTitle(),"",SHARE_MEDIA.WEIXIN,null);
String path = Constants.LEAEN_PROGRAM_PATH.replace("_type","live")+item.getId();
CommonUtils.shareProgramPath(mActivity, item.getLiveStreamPic(), item.getTitle(), "",path, SHARE_MEDIA.WEIXIN, null);
AddShareRecordData data = new AddShareRecordData(mUserId,mUserInfo.getAccountName(),
"微信",item.getId(),3);
addShareRecord(data);
......
......@@ -145,10 +145,17 @@
android:text="0" />
<ImageButton
android:id="@+id/ib_share"
android:layout_width="40dp"
android:layout_width="35dp"
android:background="@color/transparent"
android:layout_height="match_parent"
android:src="@drawable/icon_share_gray" />
<TextView
android:id="@+id/tv_shares"
style="@style/common_text_style"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingRight="10dp"
android:text="0" />
</LinearLayout>
......
......@@ -102,16 +102,25 @@
<TextView
android:id="@+id/tv_like"
style="@style/common_text_style"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="10dp"
android:text="0" />
<ImageButton
android:id="@+id/ib_share"
android:layout_width="40dp"
android:layout_width="35dp"
android:background="@color/transparent"
android:layout_height="match_parent"
android:src="@drawable/icon_share_gray" />
<TextView
android:id="@+id/tv_shares"
style="@style/common_text_style"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingRight="10dp"
android:text="0" />
</LinearLayout>
</LinearLayout>
......
......@@ -96,10 +96,17 @@
<ImageButton
android:id="@+id/ib_share"
android:layout_width="40dp"
android:layout_width="35dp"
android:background="@color/transparent"
android:layout_height="match_parent"
android:src="@drawable/icon_share_gray" />
<TextView
android:id="@+id/tv_shares"
style="@style/common_text_style"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingRight="10dp"
android:text="0" />
</LinearLayout>
</LinearLayout>
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dayu.livemodule" >
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- IMSDK 权限 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!--<uses-permission android:name="android.permission.SET_DEBUG_APP" />-->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<application
android:usesCleartextTraffic="true"
android:largeHeap="true"
>
<activity
android:name=".xiaozhibo.login.TCLoginActivity"
android:screenOrientation="portrait"
android:theme="@style/LoginTheme" />
<activity
android:name=".xiaozhibo.login.TCRegisterActivity"
android:screenOrientation="portrait"
android:theme="@style/RegisterTheme" />
<activity
android:name=".xiaozhibo.main.TCMainActivity"
android:screenOrientation="portrait"
android:launchMode="singleTask"/>
<activity
android:name=".xiaozhibo.anchor.prepare.TCAnchorPrepareActivity"
android:screenOrientation="portrait" />
<activity
android:name=".xiaozhibo.audience.TCAudienceActivity"
android:screenOrientation="landscape"
android:theme="@style/PlayerTheme"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".xiaozhibo.playback.TCPlaybackActivity"
android:screenOrientation="portrait"
android:theme="@style/PlayerTheme"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".xiaozhibo.anchor.TCCameraAnchorActivity"
android:screenOrientation="landscape"
android:theme="@style/PlayerTheme"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".xiaozhibo.anchor.screen.TCScreenAnchorActivity"
android:theme="@style/RecordActivityTheme"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing"
android:launchMode="singleTask">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:name=".xiaozhibo.anchor.screen.TCScreenRecordService"
android:enabled="true"
android:exported="false">
</service>
<activity android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity" android:theme="@android:style/Theme.Translucent" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.dayu.bigfish.fileProvider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<uses-library
android:name="com.google.android.maps"
android:required="false" />
<uses-library android:name="android.test.runner" />
<service
android:name="com.tencent.imsdk.session.remote.SessionService"
android:process=":network" />
<service
android:name="com.tencent.imsdk.session.remote.AssistService"
android:process=":network" />
<service
android:name="com.tencent.imsdk.session.remote.KeepAliveJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":network" />
<receiver android:name="com.tencent.imsdk.session.SessionBroadcastReceiver" >
<intent-filter>
<action android:name="com.tencent.imsdk.session.boot" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="com.tencent.qcloud.qal.TASK_REMOVED" />
</intent-filter>
</receiver>
</application>
</manifest>
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.dayu.livemodule.xiaozhibo.anchor;
import android.animation.ObjectAnimator;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.dayu.livemodule.R;
import com.dayu.livemodule.roomutil.commondef.AnchorInfo;
import com.dayu.livemodule.xiaozhibo.anchor.music.TCAudioControl;
import com.dayu.livemodule.xiaozhibo.common.msg.TCSimpleUserInfo;
import com.dayu.livemodule.xiaozhibo.common.report.TCELKReportMgr;
import com.dayu.livemodule.xiaozhibo.common.utils.TCConstants;
import com.dayu.livemodule.xiaozhibo.common.utils.TCUtils;
import com.dayu.livemodule.xiaozhibo.common.widget.TCUserAvatarListAdapter;
import com.dayu.livemodule.xiaozhibo.common.widget.beauty.LiveRoomBeautyKit;
import com.dayu.livemodule.xiaozhibo.common.widget.video.TCVideoView;
import com.dayu.livemodule.xiaozhibo.common.widget.video.TCVideoViewMgr;
import com.dayu.livemodule.xiaozhibo.login.TCUserMgr;
import com.tencent.liteav.demo.beauty.BeautyPanel;
import com.tencent.liteav.demo.beauty.BeautyParams;
import com.tencent.rtmp.ui.TXCloudVideoView;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
/**
* Module: TCBaseAnchorActivity
* <p>
* Function: 主播推流的页面
* <p>
* <p>
* 1. MLVB 其他观众发起连麦请求处理:{@link TCCameraAnchorActivity2#onRequestJoinAnchor(AnchorInfo, String)}
* <p>
* 2. MLVB 其他主播连麦,结束连麦处理:{@link TCCameraAnchorActivity2#onAnchorEnter(AnchorInfo)} {@link TCCameraAnchorActivity2#onAnchorExit(AnchorInfo)}
* <p>
* 3. 音效控制面板类 {@link TCAudioControl}
* <p>
* 4. 美颜特效控制类 {@link BeautyPanel}
*/
public class TCCameraAnchorActivity2 extends TCBaseAnchorActivity {
private static final String TAG = TCCameraAnchorActivity2.class.getSimpleName();
private TXCloudVideoView mTXCloudVideoView; // 主播本地预览的 View
private Button mFlashView; // 闪光灯按钮
// 观众头像列表控件
private RecyclerView mUserAvatarList; // 用户头像的列表控件
private TCUserAvatarListAdapter mAvatarListAdapter; // 头像列表的 Adapter
// 主播信息
private ImageView mHeadIcon; // 主播头像
private ImageView mRecordBall; // 表明正在录制的红点球
private TextView mBroadcastTime; // 已经开播的时间
private TextView mMemberCount; // 观众数量
View halfView;
private TCAudioControl mAudioCtrl; // 音效控制面板
private LinearLayout mAudioPluginLayout;
private BeautyPanel mBeautyControl; // 美颜设置的控制类
// log相关
private boolean mShowLog; // 是否打开 log 面板
private boolean mFlashOn; // 是否打开闪光灯
// 连麦主播
private boolean mPendingRequest; // 主播是否正在处理请求
private TCVideoViewMgr mPlayerVideoViewList; // 主播视频列表的View
private List<AnchorInfo> mPusherList; // 当前在麦上的主播
private ObjectAnimator mObjAnim; // 动画
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.BeautyTheme);
super.onCreate(savedInstanceState);
TCELKReportMgr.getInstance().reportELK(TCConstants.ELK_ACTION_CAMERA_PUSH, TCUserMgr.getInstance().getUserId(), 0, "摄像头推流", null);
mPusherList = new ArrayList<>();
LiveRoomBeautyKit manager = new LiveRoomBeautyKit(mLiveRoom);
mBeautyControl.setProxy(manager);
}
@Override
protected void initView() {
setContentView(R.layout.activity_camera_anchor);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.initView();
halfView = findViewById(R.id.half_view);
mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.anchor_video_view);
mTXCloudVideoView.setLogMargin(10, 10, 45, 55);
mUserAvatarList = (RecyclerView) findViewById(R.id.anchor_rv_avatar);
mAvatarListAdapter = new TCUserAvatarListAdapter(this, TCUserMgr.getInstance().getUserId());
mUserAvatarList.setAdapter(mAvatarListAdapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mUserAvatarList.setLayoutManager(linearLayoutManager);
mFlashView = (Button) findViewById(R.id.anchor_btn_flash);
mBroadcastTime = (TextView) findViewById(R.id.anchor_tv_broadcasting_time);
mBroadcastTime.setText(String.format(Locale.US, "%s", "00:00:00"));
mRecordBall = (ImageView) findViewById(R.id.anchor_iv_record_ball);
mHeadIcon = (ImageView) findViewById(R.id.anchor_iv_head_icon);
showHeadIcon(mHeadIcon, TCUserMgr.getInstance().getAvatar());
mMemberCount = (TextView) findViewById(R.id.anchor_tv_member_counts);
mMemberCount.setText("0");
//AudioControl
mAudioCtrl = (TCAudioControl) findViewById(R.id.anchor_audio_control);
mAudioPluginLayout = (LinearLayout) findViewById(R.id.anchor_ll_audio_plugin);
mBeautyControl = (BeautyPanel) findViewById(R.id.beauty_panel);
// 监听踢出的回调
mPlayerVideoViewList = new TCVideoViewMgr(this, new TCVideoView.OnRoomViewListener() {
@Override
public void onKickUser(String userID) {
if (userID != null) {
for (AnchorInfo item : mPusherList) {
if (userID.equalsIgnoreCase(item.userID)) {
onAnchorExit(item);
// changePushView(item);
break;
}
}
mLiveRoom.kickoutJoinAnchor(userID);
}
}
});
}
private void changePushView(AnchorInfo item) {
final TCVideoView videoView = mPlayerVideoViewList.applyVideoView(item.userID);
if (videoView == null) {
return;
}
mLiveRoom.startLocalPreview(true, videoView.videoView);
mLiveRoom.startRemoteView(item, mTXCloudVideoView, new PlayCallback() {
@Override
public void onBegin() {
}
@Override
public void onError(int errCode, String errInfo) {
}
@Override
public void onEvent(int event, Bundle param) {
}
}); //开启远端视频渲染
}
/**
* 加载主播头像
*
* @param view view
* @param avatar 头像链接
*/
private void showHeadIcon(ImageView view, String avatar) {
TCUtils.showPicWithUrl(this, view, avatar, R.drawable.face);
}
@Override
protected void onDestroy() {
super.onDestroy();
stopRecordAnimation();
mPlayerVideoViewList.recycleVideoView();
mPlayerVideoViewList = null;
if (mMainHandler != null) {
mMainHandler.removeCallbacksAndMessages(null);
}
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 开始和停止推流相关
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
protected void startPublish() {
mAudioCtrl.setPusher(mLiveRoom);
mTXCloudVideoView.setVisibility(View.VISIBLE);
// 打开本地预览,传入预览的 View
mLiveRoom.startLocalPreview(true, mTXCloudVideoView);
// 设置美颜参数
BeautyParams beautyParams = new BeautyParams();
mLiveRoom.getBeautyManager().setBeautyStyle(beautyParams.mBeautyStyle);
mLiveRoom.getBeautyManager().setBeautyLevel(beautyParams.mBeautyLevel);
mLiveRoom.getBeautyManager().setWhitenessLevel(beautyParams.mWhiteLevel);
mLiveRoom.getBeautyManager().setRuddyLevel(beautyParams.mRuddyLevel);
// 设置瘦脸参数
mLiveRoom.getBeautyManager().setFaceSlimLevel(beautyParams.mFaceSlimLevel);
// 设置大眼参数
mLiveRoom.getBeautyManager().setEyeScaleLevel(beautyParams.mBigEyeLevel);
if (TCUtils.checkRecordPermission(this)) {
super.startPublish();
}
}
@Override
protected void stopPublish() {
//踢出连麦人
// if (mPusherList != null && mPusherList.size() > 0) {
// for (AnchorInfo user : mPusherList){
// mLiveRoom.kickoutJoinAnchor(user.userID);
// onAnchorExit(user);
// }
// }
super.stopPublish();
if (mAudioCtrl != null) {
mAudioCtrl.unInit();
mAudioCtrl.setPusher(null);
mAudioCtrl = null;
}
}
/**
* 取消连麦弹框
*
*/
public void showExitAnchorDialog(String msg) {
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.ConfirmDialogStyle);
builder.setCancelable(true);
builder.setTitle(msg);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
stopAnchor();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
alertDialog.setCanceledOnTouchOutside(false);
}
private void stopAnchor() {
//踢出连麦人
if (mPusherList != null && mPusherList.size() > 0) {
for (AnchorInfo user : mPusherList){
mLiveRoom.kickoutJoinAnchor(user.userID);
onAnchorExit(user);
}
}
}
@Override
protected void onCreateRoomSuccess() {
super.onCreateRoomSuccess();
startRecordAnimation();
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // MLVB 组件回调
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
public void onAnchorEnter(final AnchorInfo pusherInfo) {
if (pusherInfo == null || pusherInfo.userID == null) {
return;
}
final TCVideoView videoView = mPlayerVideoViewList.applyVideoView(pusherInfo.userID);
if (videoView == null) {
return;
}
if (mPusherList != null) {
boolean exist = false;
for (AnchorInfo item : mPusherList) {
if (pusherInfo.userID.equalsIgnoreCase(item.userID)) {
exist = true;
break;
}
}
if (exist == false) {
mPusherList.add(pusherInfo);
}
}
videoView.startLoading();
mLiveRoom.startRemoteView(pusherInfo, videoView.videoView, new PlayCallback() {
@Override
public void onBegin() {
videoView.stopLoading(true); //推流成功,stopLoading 大主播显示出踢人的button
}
@Override
public void onError(int errCode, String errInfo) {
videoView.stopLoading(false);
onDoAnchorExit(pusherInfo);
}
@Override
public void onEvent(int event, Bundle param) {
}
}); //开启远端视频渲染
}
@Override
public void onAnchorExit(AnchorInfo pusherInfo) {
onDoAnchorExit(pusherInfo);
}
private void onDoAnchorExit(AnchorInfo pusherInfo) {
if (mPusherList != null) {
Iterator<AnchorInfo> it = mPusherList.iterator();
while (it.hasNext()) {
AnchorInfo item = it.next();
if (pusherInfo.userID.equalsIgnoreCase(item.userID)) {
it.remove();
break;
}
}
}
mLiveRoom.stopRemoteView(pusherInfo);//关闭远端视频渲染
mPlayerVideoViewList.recycleVideoView(pusherInfo.userID);
}
@Override
public void onRequestJoinAnchor(final AnchorInfo pusherInfo, String reason) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setCancelable(true)
.setTitle("提示")
.setMessage(pusherInfo.userName + "向您发起连麦请求")
.setPositiveButton("接受", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mLiveRoom.responseJoinAnchor(pusherInfo.userID, true, "");
dialog.dismiss();
mPendingRequest = false;
}
})
.setNegativeButton("拒绝", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mLiveRoom.responseJoinAnchor(pusherInfo.userID, false, "主播拒绝了您的连麦请求");
dialog.dismiss();
mPendingRequest = false;
}
});
mMainHandler.post(new Runnable() {
@Override
public void run() {
if (mPendingRequest == true) {
mLiveRoom.responseJoinAnchor(pusherInfo.userID, false, "请稍后,主播正在处理其它人的连麦请求");
return;
}
if (mPusherList.size() >= 1) {
mLiveRoom.responseJoinAnchor(pusherInfo.userID, false, "主播端连麦人数超过最大限制");
return;
}
final AlertDialog alertDialog = builder.create();
alertDialog.setCancelable(false);
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.show();
mPendingRequest = true;
mMainHandler.postDelayed(new Runnable() {
@Override
public void run() {
alertDialog.dismiss();
mPendingRequest = false;
}
}, 10000);
}
});
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 音乐控制面板相关
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (null != mAudioCtrl && mAudioCtrl.getVisibility() != View.GONE && ev.getRawY() < mAudioCtrl.getTop()) {
mAudioCtrl.setVisibility(View.GONE);
}
if (null != mBeautyControl && mBeautyControl.getVisibility() != View.GONE && ev.getRawY() < mBeautyControl.getTop()) {
mBeautyControl.setVisibility(View.GONE);
}
return super.dispatchTouchEvent(ev);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/** attention to this below ,must add this**/
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {//是否选择,没选择就不会继续
if (requestCode == mAudioCtrl.REQUESTCODE) {
if (data == null) {
Log.e(TAG, "null data");
} else {
Uri uri = data.getData();//得到uri,后面就是将uri转化成file的过程。
if (mAudioCtrl != null) {
mAudioCtrl.processActivityResult(uri);
} else {
Log.e(TAG, "NULL Pointer! Get Music Failed");
}
}
}
}
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 界面动画与时长统计
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
/**
* 开启红点与计时动画
*/
private void startRecordAnimation() {
mObjAnim = ObjectAnimator.ofFloat(mRecordBall, "alpha", 1f, 0f, 1f);
mObjAnim.setDuration(1000);
mObjAnim.setRepeatCount(-1);
mObjAnim.start();
}
/**
* 关闭红点与计时动画
*/
private void stopRecordAnimation() {
if (null != mObjAnim)
mObjAnim.cancel();
}
@Override
protected void onBroadcasterTimeUpdate(long second) {
super.onBroadcasterTimeUpdate(second);
if (!mTCSwipeAnimationController.isMoving())
mBroadcastTime.setText(TCUtils.formattedTime(second));
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 点击事件与调用函数相关
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
public void onClick(View v) {
int i = v.getId();
if (i == R.id.switch_cam) {
if (mLiveRoom != null) {
mLiveRoom.switchCamera();
}
} else if (i == R.id.anchor_btn_flash) {
if (mLiveRoom == null || !mLiveRoom.enableTorch(!mFlashOn)) {
Toast.makeText(getApplicationContext(), "打开闪光灯失败", Toast.LENGTH_SHORT).show();
return;
}
mFlashOn = !mFlashOn;
mFlashView.setBackgroundDrawable(mFlashOn ?
getResources().getDrawable(R.drawable.flash_on) :
getResources().getDrawable(R.drawable.flash_off));
} else if (i == R.id.beauty_btn) {
if (mBeautyControl.isShown()) {
mBeautyControl.setVisibility(View.GONE);
} else {
mBeautyControl.setVisibility(View.VISIBLE);
}
} else if (i == R.id.btn_close) {
if (mPusherList != null && mPusherList.size() > 0) {
showExitAnchorDialog("当前正在连麦,是否结束连麦?");
}else {
showExitInfoDialog("当前正在直播,是否退出直播?", false);
}
} else if (i == R.id.btn_audio_ctrl) {
if (null != mAudioCtrl) {
mAudioCtrl.setVisibility(mAudioCtrl.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
} else if (i == R.id.btn_audio_effect) {
mAudioCtrl.setVisibility(mAudioCtrl.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
} else if (i == R.id.btn_audio_close) {
mAudioCtrl.stopBGM();
mAudioPluginLayout.setVisibility(View.GONE);
mAudioCtrl.setVisibility(View.GONE);
} else if (i == R.id.btn_log) {
showLog();
} else {
super.onClick(v);
}
}
@Override
protected void showErrorAndQuit(int errorCode, String errorMsg) {
stopRecordAnimation();
super.showErrorAndQuit(errorCode, errorMsg);
}
private void showLog() {
mShowLog = !mShowLog;
if (mTXCloudVideoView != null) {
mTXCloudVideoView.showLog(mShowLog);
}
ImageView liveLog = (ImageView) findViewById(R.id.btn_log);
if (mShowLog) {
if (liveLog != null) liveLog.setBackgroundResource(R.drawable.icon_log_on);
} else {
if (liveLog != null) liveLog.setBackgroundResource(R.drawable.icon_log_off);
}
mPlayerVideoViewList.showLog(mShowLog);
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 成员进退房事件信息处理
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
protected void handleMemberJoinMsg(TCSimpleUserInfo userInfo) {
//更新头像列表 返回false表明已存在相同用户,将不会更新数据
if (mAvatarListAdapter.addItem(userInfo))
super.handleMemberJoinMsg(userInfo);
mMemberCount.setText(String.format(Locale.CHINA, "%d", mCurrentMemberCount));
}
@Override
protected void handleMemberQuitMsg(TCSimpleUserInfo userInfo) {
mAvatarListAdapter.removeItem(userInfo.userid);
super.handleMemberQuitMsg(userInfo);
mMemberCount.setText(String.format(Locale.CHINA, "%d", mCurrentMemberCount));
}
/**
* /////////////////////////////////////////////////////////////////////////////////
* //
* // 权限相关
* //
* /////////////////////////////////////////////////////////////////////////////////
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 100:
for (int ret : grantResults) {
if (ret != PackageManager.PERMISSION_GRANTED) {
showErrorAndQuit(-1314, "获取权限失败");
return;
}
}
this.startPublish();
break;
default:
break;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/audience_play_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="contentDescription">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
</LinearLayout>
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/anchor_video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:visibility="gone" />
<ImageView
android:id="@+id/audience_background"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!--连麦:播放小窗口定义 开始-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"/>
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent">
<!--连麦:第一个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
>
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
<FrameLayout
android:id="@+id/loading_background1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out1"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="56dp"
android:layout_alignParentRight="true">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!--连麦:第二个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout2"
android:layout_width="180dp"
android:layout_height="270dp"
>
<!--android:layout_above="@+id/frameLayout1"-->
<!--android:layout_alignRight="@+id/frameLayout1"-->
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"></com.tencent.rtmp.ui.TXCloudVideoView>
<FrameLayout
android:id="@+id/loading_background2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out2"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone" />
<!--连麦:第三个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout3"
android:layout_width="180dp"
android:layout_height="270dp"
android:layout_above="@+id/frameLayout2"
android:layout_alignRight="@+id/frameLayout2">
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"></com.tencent.rtmp.ui.TXCloudVideoView>
<FrameLayout
android:id="@+id/loading_background3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview3"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out3"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone" />
</RelativeLayout>
</ScrollView>
<!--连麦:播放小窗口定义 结束-->
<RelativeLayout
android:id="@+id/anchor_rl_controllLayer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/layout_live_pusher_info"
layout="@layout/layout_live_pusher_info"
android:layout_width="110dp"
android:layout_height="35dp"
android:layout_margin="5dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/anchor_rv_avatar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginRight="15dp"
android:layout_toRightOf="@+id/layout_live_pusher_info"
android:visibility="gone" />
<RelativeLayout
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/btn_message_input"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_alignParentLeft="true"
android:background="@drawable/icon_message"
android:onClick="onClick" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:id="@+id/audience_btn_switch_cam"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/icon_switch_camera_on"
android:visibility="invisible" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:id="@+id/audience_btn_linkmic"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/linkmic_on"
android:visibility="invisible" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone">
<ImageView
android:id="@+id/btn_share"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/icon_share"
android:onClick="onClick" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone">
<ImageView
android:id="@+id/btn_log"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/icon_log_off"
android:onClick="onClick" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/btn_like"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/icon_like"
android:onClick="onClick" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
android:id="@+id/btn_back"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_gravity="center"
android:background="@drawable/btn_close"
android:onClick="onClick" />
</FrameLayout>
</LinearLayout>
</RelativeLayout>
<ListView
android:id="@+id/im_msg_listview"
android:layout_width="250dp"
android:layout_height="10dp"
android:layout_above="@id/tool_bar"
android:layout_alignParentLeft="true"
android:layout_marginLeft="15dp"
android:cacheColorHint="#00000000"
android:divider="#3c421b1b"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="none"
android:stackFromBottom="true"
android:transcriptMode="normal"
android:visibility="gone" />
<!--录制-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:visibility="gone">
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/record_progress" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_weight="11" />
<FrameLayout
android:layout_width="5dp"
android:layout_height="5dp"
android:background="#FF0ACBAB" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_weight="1" />
</LinearLayout>
<ImageView
android:id="@+id/close_record"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_centerVertical="true"
android:layout_marginLeft="50dp"
android:background="@drawable/btn_close"
android:onClick="onClick" />
<ImageView
android:id="@+id/record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginTop="30dp"
android:background="@drawable/start_record"
android:onClick="onClick" />
<ImageView
android:id="@+id/retry_record"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="50dp"
android:background="@drawable/again"
android:onClick="onClick" />
</RelativeLayout>
<!--点赞动画-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp">
<com.dayu.livemodule.xiaozhibo.common.widget.like.TCHeartLayout
android:id="@+id/heart_layout"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:focusable="true" />
</RelativeLayout>
<!--弹幕-->
<master.flame.danmaku.ui.widget.DanmakuView
android:id="@+id/anchor_danmaku_view"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_centerInParent="true" />
</RelativeLayout>
<com.tencent.liteav.demo.beauty.BeautyPanel
android:id="@+id/beauty_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:visibility="gone" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:visibility="gone"
>
<View
android:id="@+id/half_view"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"/>
</LinearLayout>
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/anchor_video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:visibility="gone" />
<!--连麦:播放小窗口定义 开始-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"/>
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent">
<!--连麦:第一个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
>
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
<FrameLayout
android:id="@+id/loading_background1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out1"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignTop="@id/frameLayout1"
android:layout_alignRight="@id/frameLayout1"
android:layout_gravity="top|right"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/btn_kick_out"
android:onClick="onClick"
android:visibility="invisible" />
</RelativeLayout>
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="56dp"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!--连麦:第二个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout2"
android:layout_width="180dp"
android:layout_height="270dp"
>
<!--android:layout_above="@+id/frameLayout1"-->
<!--android:layout_alignRight="@+id/frameLayout1"-->
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"></com.tencent.rtmp.ui.TXCloudVideoView>
<FrameLayout
android:id="@+id/loading_background2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out2"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignTop="@id/frameLayout2"
android:layout_alignRight="@id/frameLayout2"
android:layout_gravity="top|right"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/btn_kick_out"
android:onClick="onClick"
android:visibility="invisible" />
<!--连麦:第三个播放小窗口-->
<FrameLayout
android:id="@+id/frameLayout3"
android:layout_width="180dp"
android:layout_height="270dp"
android:layout_above="@+id/frameLayout2"
android:layout_alignRight="@+id/frameLayout2">
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_player3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"></com.tencent.rtmp.ui.TXCloudVideoView>
<FrameLayout
android:id="@+id/loading_background3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:background="@color/black"
android:visibility="gone">
<ImageView
android:id="@+id/loading_imageview3"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
<Button
android:id="@+id/btn_kick_out3"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignTop="@id/frameLayout3"
android:layout_alignRight="@id/frameLayout3"
android:layout_gravity="top|right"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/btn_kick_out"
android:onClick="onClick"
android:visibility="invisible" />
</RelativeLayout>
</ScrollView>
<!--连麦:播放小窗口定义 结束-->
<RelativeLayout
android:id="@+id/anchor_rl_controllLayer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/layout_live_pusher_info"
layout="@layout/layout_live_pusher_info"
android:layout_width="110dp"
android:layout_height="35dp"
android:layout_margin="5dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/anchor_rv_avatar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginRight="15dp"
android:layout_toRightOf="@+id/layout_live_pusher_info" />
<LinearLayout
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="15dp">
<Button
android:id="@+id/btn_message_input"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/icon_message"
android:onClick="onClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/anchor_btn_flash"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/icon_flash"
android:onClick="onClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/switch_cam"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/icon_switch_camera_on"
android:onClick="onClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/beauty_btn"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/icon_beauty_drawable"
android:onClick="onClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/btn_audio_ctrl"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/music_big"
android:onClick="onClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/btn_close"
android:layout_width="@dimen/live_btn_size"
android:layout_height="@dimen/live_btn_size"
android:background="@drawable/btn_close"
android:onClick="onClick" />
</LinearLayout>
<LinearLayout
android:id="@+id/anchor_ll_audio_plugin"
android:layout_width="200dp"
android:layout_height="50dp"
android:orientation="horizontal"
android:visibility="gone"
android:weightSum="10">
<Button
android:id="@+id/btn_audio_effect"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:background="@drawable/shape_round_button"
android:onClick="onClick"
android:text="音效"
android:textColor="#FFFFFF"
android:textSize="20dp" />
<Button
android:id="@+id/btn_audio_close"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:background="@drawable/shape_round_button"
android:onClick="onClick"
android:text="结束"
android:textColor="#FFFFFF"
android:textSize="20dp" />
</LinearLayout>
<ListView
android:id="@+id/im_msg_listview"
android:layout_width="250dp"
android:layout_height="10dp"
android:layout_above="@id/tool_bar"
android:layout_alignParentLeft="true"
android:layout_marginLeft="15dp"
android:cacheColorHint="#00000000"
android:divider="#3c421b1b"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="none"
android:stackFromBottom="true"
android:transcriptMode="normal" />
<com.dayu.livemodule.xiaozhibo.anchor.music.TCAudioControl
android:id="@+id/anchor_audio_control"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#ffffff"
android:clickable="true"
android:orientation="vertical"
android:padding="0dp"
android:visibility="gone" />
<com.tencent.liteav.demo.beauty.BeautyPanel
android:id="@+id/beauty_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/tool_bar"
android:visibility="gone" />
<LinearLayout
android:id="@+id/layoutFaceBeauty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:layout_marginBottom="0dp"
android:background="@color/white"
android:clickable="true"
android:minHeight="105dp"
android:orientation="vertical"
android:padding="15dp"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/activity_publish_beauty"
android:textSize="16sp" />
<SeekBar
android:id="@+id/beauty_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:maxHeight="1.0dip"
android:minHeight="1.0dip"
android:paddingLeft="15dp"
android:paddingRight="18dp"
android:progressDrawable="@drawable/beauty_seekbar_progress"
android:thumb="@drawable/beauty_seekbar_icon"
android:visibility="visible" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/activity_publish_white"
android:textSize="16sp" />
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:maxHeight="1.0dip"
android:minHeight="1.0dip"
android:paddingLeft="15dp"
android:paddingRight="18dp"
android:progressDrawable="@drawable/beauty_seekbar_progress"
android:thumb="@drawable/beauty_seekbar_icon"
android:visibility="visible" />
</LinearLayout>
</LinearLayout>
<!--点赞动画-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp">
<com.dayu.livemodule.xiaozhibo.common.widget.like.TCHeartLayout
android:id="@+id/heart_layout"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:focusable="true" />
</RelativeLayout>
<!--点赞动画-->
<!--弹幕-->
<master.flame.danmaku.ui.widget.DanmakuView
android:id="@+id/anchor_danmaku_view"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_centerInParent="true" />
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
......@@ -2,8 +2,6 @@ package com.dayu.order.presenter.orderdoing;
import android.databinding.ObservableField;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import com.dayu.common.BaseApplication;
import com.dayu.common.Constants;
......@@ -51,7 +49,6 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
private int mSiteId;
private int mState;
private int mPage;
private Handler mHandler;
@Override
public void onAttached() {
......@@ -66,11 +63,11 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
if (mView instanceof OrderThreeTabFragment) {
mView.showDialog();
getErrorOrder();
}else if (mView instanceof OrderDoneFragment){
} else if (mView instanceof OrderDoneFragment) {
mPage = 1;
getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE);
// getDoneOrders();
}else {
} else {
mPage = 1;
getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE);
}
......@@ -78,10 +75,10 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
@Override
public void loadMore() {
if (mView instanceof OrderDoneFragment){
if (mView instanceof OrderDoneFragment) {
getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE);
// getDoneOrders();
}else {
} else {
getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE);
}
}
......@@ -197,8 +194,7 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
manager.registerLicenseManager(licenseManager);
manager.takeLicenseFromNetwork(uuid);
if (licenseManager.checkCachedLicense() < 0) {
mHandler = new Handler(Looper.getMainLooper());
mHandler.post(() -> ToastUtils.showShortToast(getString(com.dayu.order.R.string.accredit_error)));
ToastUtils.showShortToast(getString(com.dayu.order.R.string.accredit_error));
} else {
Bundle bundle = new Bundle();
bundle.putSerializable(OrderConstant.ORDERS, order);
......@@ -210,6 +206,5 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
@Override
public void onDetached() {
super.onDetached();
mHandler = null;
}
}
......@@ -44,6 +44,7 @@ public class ProductListBean implements Serializable {
private String goodsModel;
private String pn;
private double price;
private double marketPrice;
private double salesPrice;
private double customerRebate;
private String brief;
......@@ -68,6 +69,14 @@ public class ProductListBean implements Serializable {
private Object key;
private Object orderBy;
public double getMarketPrice() {
return marketPrice;
}
public void setMarketPrice(double marketPrice) {
this.marketPrice = marketPrice;
}
public int getId() {
return id;
}
......
......@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Paint;
import com.badoo.mobile.util.WeakHandler;
import com.bigfish.salecenter.R;
......@@ -50,13 +51,14 @@ public class PosterShareActivity extends BaseActivity<SImplePresenter, ActivityP
return R.layout.activity_poster_share;
}
public static void launch(Context context, int id, String title, String imgUrl,String from, double price) {
public static void launch(Context context, int id, String title, String imgUrl,String from, double price,double marketPrice) {
Intent intent = new Intent(context, PosterShareActivity.class);
intent.putExtra("id", id);
intent.putExtra("img", imgUrl);
intent.putExtra("title", title);
intent.putExtra("from", from);
intent.putExtra("price", price);
intent.putExtra("price2", marketPrice);
context.startActivity(intent);
}
......@@ -68,7 +70,10 @@ public class PosterShareActivity extends BaseActivity<SImplePresenter, ActivityP
String imgUrl = getIntent().getStringExtra("img");
String title = getIntent().getStringExtra("title");
double price = getIntent().getDoubleExtra("price", 0);
double marketPrice = getIntent().getDoubleExtra("price2", 0);
mBind.tvPrice.setText("¥" + Double.valueOf(price).intValue());
mBind.tvPrice2.setText("¥" + Double.valueOf(marketPrice).intValue());
mBind.tvPrice2.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
mBind.tvTitle.setText(title);
GlideImageLoader.load(this, mBind.ivProduct, imgUrl, R.drawable.icon_img_default);
// GlideImageLoader.loadNoDeal(this,mBind.ivQr,imgUrl,R.drawable.icon_img_default);
......
......@@ -82,7 +82,7 @@ public class ProductInstructionFragment extends BaseFragment<SImplePresenter, Fr
addShareRecord(data);
}else {
PosterShareActivity.launch(mActivity,mDetail.getId(),mDetail.getGoodsModel()
,mDetail.getFirstUrl(),"pdetail",mDetail.getPrice());
,mDetail.getFirstUrl(),"pdetail",mDetail.getPrice(),mDetail.getMarketPrice());
}
});
......
......@@ -197,7 +197,7 @@ public class SaleProductFragment extends BaseFragment<SaleProductPresent, Fragme
addShareRecord(data);
}else {
PosterShareActivity.launch(mActivity,item.getId(),item.getGoodsModel()
,item.getFirstUrl(),"product",item.getPrice());
,item.getFirstUrl(),"product",item.getPrice(),item.getMarketPrice());
}
});
......
......@@ -35,12 +35,7 @@
android:paddingLeft="20dp"
android:paddingTop="20dp"
android:paddingRight="20dp"
android:paddingBottom="80dp">
<TextView
style="@style/common_text_style"
android:text="平台保障,放心交易"
android:layout_gravity="center_horizontal"
/>
android:paddingBottom="70dp">
<ImageView
android:id="@+id/iv_product"
......@@ -52,16 +47,50 @@
android:id="@+id/tv_title"
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:layout_margin="5dp"
android:layout_margin="10dp"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_price"
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:textColor="@color/text_common_blue"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="15dp"
android:gravity="center_vertical"
>
<TextView
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:textColor="@color/text_common_blue"
android:text="厂家直销价:"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_price"
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:textColor="@color/text_common_blue"
android:layout_marginLeft="5dp"
android:textSize="15sp" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"
/>
<TextView
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:textColor="@color/color_69"
android:text="市场售价:"
/>
<TextView
android:id="@+id/tv_price2"
android:layout_marginLeft="5dp"
style="@style/common_text_style"
android:layout_gravity="center_horizontal"
android:textColor="@color/color_69"
/>
</LinearLayout>
<ImageView
android:id="@+id/iv_qr"
......
......@@ -138,7 +138,11 @@ public class CommonRecordActivity extends BaseActivity<SImplePresenter, Activity
@Override
protected void convert(BaseViewHolder helper, CommonRecordListBean item) {
helper.setText(R.id.tv_item1, item.getRewardPrice() + "");
helper.setText(R.id.tv_item2, item.getProviderName());
if (mType == 4){
helper.setText(R.id.tv_item2, item.getRewardItem());
}else {
helper.setText(R.id.tv_item2, item.getProviderName());
}
helper.setText(R.id.tv_item3, item.getCreateTime());
}
};
......
package com.dayu.usercenter.ui.activity2;
public class TestSplashActivity {
}
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 sign in to comment