6.5.4礼物栏优化
@ -194,5 +194,6 @@ dependencies {
|
||||
//选择器
|
||||
api 'com.github.gzu-liyujiang.AndroidPicker:Common:4.1.11'
|
||||
api 'com.github.gzu-liyujiang.AndroidPicker:WheelView:4.1.11'
|
||||
|
||||
//自定义圆角图片
|
||||
api 'com.makeramen:roundedimageview:2.3.0'
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
package com.yunbao.common.adapter;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.GiftQuantityModel;
|
||||
import com.yunbao.common.views.GiftNumber;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GiftNumberAdapter extends RecyclerView.Adapter {
|
||||
private List<GiftQuantityModel> giftQuantityModels;
|
||||
|
||||
public GiftNumberAdapter(List<GiftQuantityModel> giftQuantityModels) {
|
||||
this.giftQuantityModels = giftQuantityModels;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View robotSayHelloView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_gift_number, parent, false);
|
||||
return new GiftNumber(robotSayHelloView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
GiftNumber giftNumber = (GiftNumber) holder;
|
||||
giftNumber.showData(giftQuantityModels.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return giftQuantityModels.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.yunbao.common.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* 礼物选择数量
|
||||
*/
|
||||
public class GiftQuantityModel extends BaseModel {
|
||||
|
||||
@SerializedName("id")
|
||||
private String id;
|
||||
@SerializedName("gift_quantity")
|
||||
private String giftQuantity;
|
||||
@SerializedName("font_colour")
|
||||
private String fontColour;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public GiftQuantityModel setId(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGiftQuantity() {
|
||||
return giftQuantity;
|
||||
}
|
||||
|
||||
public GiftQuantityModel setGiftQuantity(String giftQuantity) {
|
||||
this.giftQuantity = giftQuantity;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFontColour() {
|
||||
return fontColour;
|
||||
}
|
||||
|
||||
public GiftQuantityModel setFontColour(String fontColour) {
|
||||
this.fontColour = fontColour;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@ public class LiveGiftBean {
|
||||
private String name;
|
||||
private String price;
|
||||
private String icon;
|
||||
private boolean checked;
|
||||
private boolean checked = false;
|
||||
private int page;
|
||||
private View mView;
|
||||
private String sendType;//支付是金币还是钻石
|
||||
@ -36,6 +36,30 @@ public class LiveGiftBean {
|
||||
private String tag;
|
||||
@JSONField(name = "blind_box_type")
|
||||
private int blind_box_type = 0;
|
||||
//礼物角标
|
||||
|
||||
@JSONField(name = "corner_mark")
|
||||
private String cornerMark;
|
||||
@JSONField(name = "gift_description")
|
||||
private String giftDescription;
|
||||
|
||||
public String getGiftDescription() {
|
||||
return giftDescription;
|
||||
}
|
||||
|
||||
public LiveGiftBean setGiftDescription(String giftDescription) {
|
||||
this.giftDescription = giftDescription;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCornerMark() {
|
||||
return cornerMark;
|
||||
}
|
||||
|
||||
public LiveGiftBean setCornerMark(String cornerMark) {
|
||||
this.cornerMark = cornerMark;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getBlind_box_type() {
|
||||
return blind_box_type;
|
||||
|
@ -0,0 +1,16 @@
|
||||
package com.yunbao.common.event;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
|
||||
public class GiftNumberEvent extends BaseModel {
|
||||
private String mCount;
|
||||
|
||||
public String getmCount() {
|
||||
return mCount;
|
||||
}
|
||||
|
||||
public GiftNumberEvent setmCount(String mCount) {
|
||||
this.mCount = mCount;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -336,6 +336,18 @@ public class ImgLoader {
|
||||
builder.into(imageView);
|
||||
}
|
||||
|
||||
public static void displayBlurLive(Context context, int url, ImageView imageView) {
|
||||
if (!contextIsExist(context)) {
|
||||
return;
|
||||
}
|
||||
RequestBuilder<Drawable> builder = Glide.with(context)
|
||||
.load(url)
|
||||
.thumbnail(thumbnail)
|
||||
.apply(RequestOptions.bitmapTransform(new BlurTransformation(20)))
|
||||
.placeholder(R.mipmap.live_bg);
|
||||
builder.into(imageView);
|
||||
}
|
||||
|
||||
private static boolean contextIsExist(Context context) {
|
||||
if (context == null) {
|
||||
return false;
|
||||
|
@ -19,13 +19,13 @@ import com.yunbao.common.bean.ConfigBean;
|
||||
import com.yunbao.common.event.FollowEvent;
|
||||
import com.yunbao.common.interfaces.CommonCallback;
|
||||
import com.yunbao.common.manager.APKManager;
|
||||
import com.yunbao.common.manager.GiftQuantityManager;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.LiveClassManager;
|
||||
import com.yunbao.common.manager.NewLevelManager;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.DialogUitl;
|
||||
import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.MD5Util;
|
||||
import com.yunbao.common.utils.SpUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.VersionUtil;
|
||||
@ -231,6 +231,10 @@ public class CommonHttpUtil {
|
||||
if (obj.containsKey("defaultBubbleUrl")) {
|
||||
IMLoginManager.get(context).setDefaultBubbleUrl(obj.getString("defaultBubbleUrl"));
|
||||
}
|
||||
if (obj.containsKey("gift_quantity")) {
|
||||
JSONArray giftQuantity = obj.getJSONArray("gift_quantity");
|
||||
new GiftQuantityManager(context).UpGiftQuantity(giftQuantity.toJSONString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
String error = "info[0]:" + info[0] + "\n\n\n" + "Exception:" + e.getClass() + "---message--->" + e.getMessage();
|
||||
|
@ -829,4 +829,5 @@ public interface PDLiveApi {
|
||||
@Query("stream") String stream,
|
||||
@Query("red_packet_id") String redPacketId
|
||||
);
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
package com.yunbao.common.manager;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.yunbao.common.bean.GiftQuantityModel;
|
||||
import com.yunbao.common.bean.LiveClassBean;
|
||||
import com.yunbao.common.manager.base.BaseCacheManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GiftQuantityManager extends BaseCacheManager {
|
||||
private final static String KEY_GIFT_QUANTITY = "GiftQuantity";
|
||||
private static GiftQuantityManager manager;
|
||||
private Context context;
|
||||
private List<GiftQuantityModel> giftQuantityModels;
|
||||
|
||||
public GiftQuantityManager(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指导员备注信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<GiftQuantityModel> getGiftQuantity() {
|
||||
List<GiftQuantityModel> giftQuantityModels = getList(KEY_GIFT_QUANTITY, new TypeToken<List<GiftQuantityModel>>() {
|
||||
}.getType());
|
||||
if (giftQuantityModels == null || giftQuantityModels.size() == 0) {
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("1").setFontColour("#ffffff"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("10").setFontColour("#ffffff"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("66").setFontColour("#ffffff"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("88").setFontColour("#FA62A1"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("100").setFontColour("#9B62FF"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("520").setFontColour("#65BFFB"));
|
||||
giftQuantityModels.add(new GiftQuantityModel().setGiftQuantity("1314").setFontColour("#05F3EC"));
|
||||
}
|
||||
return giftQuantityModels;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存等级图标
|
||||
*
|
||||
* @param json
|
||||
*/
|
||||
public void UpGiftQuantity(String json) {
|
||||
giftQuantityModels = new Gson().fromJson(json, new TypeToken<List<GiftQuantityModel>>() {
|
||||
}.getType());
|
||||
put(KEY_GIFT_QUANTITY, giftQuantityModels);
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.yunbao.common.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.renderscript.Allocation;
|
||||
import android.renderscript.Element;
|
||||
import android.renderscript.RenderScript;
|
||||
import android.renderscript.ScriptIntrinsicBlur;
|
||||
|
||||
/**
|
||||
* Created by L on 2017/10/12.
|
||||
*/
|
||||
|
||||
public class BlurBitmapUtil {
|
||||
/**
|
||||
* 图片缩放比例
|
||||
*/
|
||||
private static final float BITMAP_SCALE = 0.4f;
|
||||
/**
|
||||
* 最大模糊度(在0.0到25.0之间)
|
||||
*/
|
||||
private static final float BLUR_RADIUS = 25f;
|
||||
/**
|
||||
* 模糊图片的具体方法
|
||||
*
|
||||
* @param context 上下文对象
|
||||
* @param image 需要模糊的图片
|
||||
* @return 模糊处理后的图片
|
||||
*/
|
||||
public static Bitmap blur(Context context, Bitmap image) {
|
||||
// 计算图片缩小后的长宽
|
||||
int width = Math.round(image.getWidth() * BITMAP_SCALE);
|
||||
int height = Math.round(image.getHeight() * BITMAP_SCALE);
|
||||
// 将缩小后的图片做为预渲染的图片。
|
||||
Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
|
||||
// 创建一张渲染后的输出图片。
|
||||
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
|
||||
// 创建RenderScript内核对象
|
||||
RenderScript rs = RenderScript.create(context);
|
||||
// 创建一个模糊效果的RenderScript的工具对象
|
||||
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
|
||||
// 由于RenderScript并没有使用VM来分配内存,所以需要使用Allocation类来创建和分配内存空间。
|
||||
// 创建Allocation对象的时候其实内存是空的,需要使用copyTo()将数据填充进去。
|
||||
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
|
||||
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
|
||||
// 设置渲染的模糊程度, 25f是最大模糊度
|
||||
blurScript.setRadius(BLUR_RADIUS);
|
||||
// 设置blurScript对象的输入内存
|
||||
blurScript.setInput(tmpIn);
|
||||
// 将输出数据保存到输出内存中
|
||||
blurScript.forEach(tmpOut);
|
||||
// 将数据填充到Allocation中
|
||||
tmpOut.copyTo(outputBitmap);
|
||||
return outputBitmap;
|
||||
}
|
||||
}
|
@ -139,7 +139,7 @@ public class CustomDrawerPopupView extends DrawerPopupView {
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.online), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.more_menu));
|
||||
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.diamond_linear));
|
||||
builder.hasShadowBg(false)
|
||||
.isDestroyOnDismiss(true)
|
||||
.isLightStatusBar(false)
|
||||
|
34
common/src/main/java/com/yunbao/common/views/GiftNumber.java
Normal file
@ -0,0 +1,34 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.bean.GiftQuantityModel;
|
||||
import com.yunbao.common.event.GiftNumberEvent;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
|
||||
public class GiftNumber extends RecyclerView.ViewHolder {
|
||||
private TextView customQuantity;
|
||||
|
||||
public GiftNumber(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
customQuantity = itemView.findViewById(R.id.custom_quantity);
|
||||
}
|
||||
|
||||
public void showData(GiftQuantityModel quantityModel) {
|
||||
customQuantity.setText(quantityModel.getGiftQuantity());
|
||||
customQuantity.setTextColor(Color.parseColor(quantityModel.getFontColour()));
|
||||
ViewClicksAntiShake.clicksAntiShake(customQuantity, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
Bus.get().post(new GiftNumberEvent().setmCount(quantityModel.getGiftQuantity()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.lxj.xpopup.core.BottomPopupView;
|
||||
import com.yunbao.common.R;
|
||||
import com.yunbao.common.adapter.GiftNumberAdapter;
|
||||
import com.yunbao.common.event.GiftNumberEvent;
|
||||
import com.yunbao.common.manager.GiftQuantityManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
public class GiftNumberPopup extends BottomPopupView {
|
||||
public GiftNumberPopup(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
// 返回自定义弹窗的布局
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.view_live_gift_number;
|
||||
}
|
||||
|
||||
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
Bus.getOn(this);
|
||||
super.onCreate();
|
||||
RecyclerView giftList = findViewById(R.id.gift_list);
|
||||
giftList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
GiftNumberAdapter giftNumberAdapter = new GiftNumberAdapter(new GiftQuantityManager(getContext()).getGiftQuantity());
|
||||
giftList.setAdapter(giftNumberAdapter);
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.to_can), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDismiss() {
|
||||
super.onDismiss();
|
||||
Bus.getOff(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onGiftNumberEvent(GiftNumberEvent event) {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
}
|
10
common/src/main/res/drawable/backgroud_custom_gift.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners
|
||||
android:topLeftRadius="8dp"
|
||||
android:topRightRadius="8dp" />
|
||||
<gradient
|
||||
android:angle="90"
|
||||
android:endColor="#000000"
|
||||
android:startColor="#9000" />
|
||||
</shape>
|
BIN
common/src/main/res/drawable/backgroud_custom_gift2.png
Normal file
After Width: | Height: | Size: 71 KiB |
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="#5C607D" />
|
||||
<stroke
|
||||
android:width="0.2dp"
|
||||
android:color="#EAEAEA" />
|
||||
</shape>
|
5
common/src/main/res/drawable/background_gift_money.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="17dp" />
|
||||
<solid android:color="#2A2C3B" />
|
||||
</shape>
|
7
common/src/main/res/drawable/background_gift_money2.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners
|
||||
android:bottomLeftRadius="16dp"
|
||||
android:topLeftRadius="16dp" />
|
||||
<solid android:color="#2A2C3B" />
|
||||
</shape>
|
11
common/src/main/res/drawable/background_gift_select2.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="8dp" />
|
||||
<solid android:color="#130F25" />
|
||||
<stroke android:width="0.6dp" android:color="#AEAEB2" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</selector>
|
15
common/src/main/res/drawable/bg_live_gift_send_new.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="true">
|
||||
<shape>
|
||||
<corners android:radius="18dp" />
|
||||
<gradient android:angle="180" android:endColor="#FF7C25" android:startColor="#FFB323" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<shape>
|
||||
<corners android:radius="18dp" />
|
||||
<solid android:color="#282518" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
5
common/src/main/res/drawable/bg_parcel_point.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="5dp"/>
|
||||
<solid android:color="#3B3D52"/>
|
||||
</shape>
|
BIN
common/src/main/res/drawable/bg_selection_quantity.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
common/src/main/res/drawable/icon_covering_layer.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
21
common/src/main/res/drawable/progress_bg_user.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!--设置ProgressBar背景色-->
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<!--设置ProgressBar进度条圆角半径-->
|
||||
<corners android:radius="5dp" />
|
||||
<solid android:color="#E6E6E6" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<!--设置ProgressBar进度条颜色-->
|
||||
<item android:id="@android:id/progress">
|
||||
<clip android:clipOrientation="horizontal">
|
||||
<shape>
|
||||
<corners android:radius="5dp" />
|
||||
<solid android:color="#FFC722" />
|
||||
</shape>
|
||||
</clip>
|
||||
</item>
|
||||
</layer-list>
|
357
common/src/main/res/layout/dialog_live_gift_popup.xml
Normal file
@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/blind_box"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:visibility="invisible">
|
||||
|
||||
<include
|
||||
|
||||
layout="@layout/view_blind_box" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/gift_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="351dp"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.makeramen.roundedimageview.RoundedImageView
|
||||
android:id="@+id/git_background2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/backgroud_custom_gift2"
|
||||
app:riv_corner_radius_bottom_left="0dp"
|
||||
app:riv_corner_radius_bottom_right="0dp"
|
||||
app:riv_corner_radius_top_left="10dp"
|
||||
app:riv_corner_radius_top_right="10dp" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/git_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:animateLayoutChanges="true">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/leveling_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginStart="17dp"
|
||||
android:layout_marginTop="9dp"
|
||||
android:background="@mipmap/icon_grade_angle_mark">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lv_str"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="Lv.8"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="6dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="4dp"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/progress_bg_user" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/leave_hint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/leveling_points"
|
||||
android:textColor="#BBBBBB"
|
||||
android:textSize="9sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginTop="14dp"
|
||||
android:layout_marginEnd="14dp"
|
||||
android:background="@mipmap/icon_right" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.yunbao.common.views.weight.MarqueeTextView
|
||||
android:id="@+id/gift_description"
|
||||
android:layout_width="0dp"
|
||||
android:background="@drawable/background_gift_description"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="marquee"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:gravity="center"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:scrollHorizontally="true"
|
||||
android:singleLine="true"
|
||||
android:textColor="#FFFFFFFF"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/btn_luck_gift_tip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp">
|
||||
|
||||
<include layout="@layout/view_nobility" />
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/gift_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginBottom="17dp"
|
||||
android:paddingStart="16dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/diamond_linear"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="32dp"
|
||||
android:background="@drawable/background_gift_money"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingTop="7dp"
|
||||
android:paddingBottom="7dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:src="@mipmap/diamond" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/diamond_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:text="0"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="8dp"
|
||||
android:layout_height="8dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:background="@mipmap/icon_right" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/gold_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toRightOf="@id/diamond_linear"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:src="@mipmap/gold_coin" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gold_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:text="10000000"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/gift_send_layout"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="14dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/gift_number_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="42dp"
|
||||
android:background="@drawable/background_gift_money2">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="1"
|
||||
android:textColor="#F5C05A"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_arrow"
|
||||
android:layout_width="10dp"
|
||||
android:layout_height="10dp"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:src="@mipmap/icon_arrow_right" />
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/live_gift_send"
|
||||
android:layout_width="62dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_gravity="end"
|
||||
android:background="@drawable/bg_live_gift_send_new"
|
||||
android:gravity="center"
|
||||
android:text="@string/live_gift_send"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp" />
|
||||
</FrameLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/gift_bottom"
|
||||
android:layout_below="@id/git_title"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/gift_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="8dp" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:background="@drawable/icon_covering_layer"
|
||||
android:scaleType="centerCrop" />
|
||||
</FrameLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="11dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@color/white" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="6dp"
|
||||
android:layout_marginEnd="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/live_wrap"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="8dp"
|
||||
android:text="@string/live_wrap"
|
||||
android:textColor="#CCCDCE"
|
||||
android:textSize="16sp" />
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/context_layout_gift"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="12dp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/btn_send_lian"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@mipmap/icon_live_gift_lian"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/live_gift_send_lian"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lian_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="35dp"
|
||||
android:textColor="#fff"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
17
common/src/main/res/layout/view_gift_number.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="26dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/custom_quantity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="26dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/custom_quantity"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
45
common/src/main/res/layout/view_live_gift_number.xml
Normal file
@ -0,0 +1,45 @@
|
||||
<?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:layout_width="match_parent"
|
||||
android:layout_height="351dp"
|
||||
android:background="@color/transparent"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
<View
|
||||
android:id="@+id/to_can"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="212dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginEnd="48dp"
|
||||
android:layout_marginBottom="50dp"
|
||||
android:background="@drawable/bg_selection_quantity"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:clickable="true"
|
||||
android:id="@+id/custom_quantity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="28dp"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/custom_quantity"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="14sp"
|
||||
android:focusable="true" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/gift_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
65
common/src/main/res/layout/view_nobility.xml
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/no_nobility"
|
||||
android:layout_width="67dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@mipmap/icon_aristocrat_tip"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:text="@string/live_ktgz"
|
||||
android:textColor="#FFC008"
|
||||
android:textSize="10sp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/established_nobility"
|
||||
android:layout_width="78dp"
|
||||
android:layout_height="26dp"
|
||||
android:background="@mipmap/icon_established_nobility"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/nobility_icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="1dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vipGoldTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="贵族"
|
||||
android:textColor="#FFC722"
|
||||
android:textSize="10sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vipGoldDesc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="贵族"
|
||||
android:textColor="#CCFFFFFF"
|
||||
android:textSize="8sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
common/src/main/res/mipmap-xxhdpi/icon_aristocrat_tip.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
common/src/main/res/mipmap-xxhdpi/icon_arrow_down.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
common/src/main/res/mipmap-xxhdpi/icon_arrow_right.png
Normal file
After Width: | Height: | Size: 165 B |
BIN
common/src/main/res/mipmap-xxhdpi/icon_empty_parcel.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
common/src/main/res/mipmap-xxhdpi/icon_established_nobility.png
Normal file
After Width: | Height: | Size: 855 B |
BIN
common/src/main/res/mipmap-xxhdpi/icon_grade_angle_mark.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 233 B |
BIN
common/src/main/res/mipmap-xxhdpi/icon_right.png
Normal file
After Width: | Height: | Size: 357 B |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
@ -1250,4 +1250,8 @@ Limited ride And limited avatar frame</string>
|
||||
<string name="lucky_red_envelope">%s drew %s in the lucky red envelope</string>
|
||||
<string name="lucky_red_envelope_amount">number</string>
|
||||
<string name="red_envelope_released_successfully">>Red successfully</string>
|
||||
<string name="leveling_points">升級還需%s經驗值,升至%s即可領取獎勵</string>
|
||||
<string name="nothing_in_the_package_yet">包裹中暫無物品哦</string>
|
||||
<string name="reach_the_top">恭喜,你已達到最高等級</string>
|
||||
<string name="custom_quantity">自定義數量</string>
|
||||
</resources>
|
||||
|
@ -9,9 +9,9 @@ ext {
|
||||
]
|
||||
manifestPlaceholders = [
|
||||
//正式、
|
||||
serverHost : "https://napi.yaoulive.com",
|
||||
// serverHost : "https://napi.yaoulive.com",
|
||||
// 测试
|
||||
// serverHost : "https://ceshi.yaoulive.com",
|
||||
serverHost : "https://ceshi.yaoulive.com",
|
||||
|
||||
|
||||
|
||||
|
@ -91,6 +91,7 @@ import com.yunbao.live.bean.LiveChatBean;
|
||||
import com.yunbao.live.dialog.LiveFansFragment;
|
||||
import com.yunbao.live.dialog.LiveGameDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveGiftDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveGiftPopup;
|
||||
import com.yunbao.live.dialog.LiveHDDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveInputDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveMicUserDialogFragment;
|
||||
@ -443,18 +444,16 @@ public class LiveAudienceActivity extends LiveActivity {
|
||||
*/
|
||||
public void openGiftWindow() {
|
||||
new Handler(Looper.getMainLooper()).post(() -> {
|
||||
|
||||
if (TextUtils.isEmpty(mLiveUid) || TextUtils.isEmpty(mStream)) {
|
||||
return;
|
||||
}
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
fragment.setPkStatus(isPk);
|
||||
fragment.setLiveGuardInfo(mLiveGuardInfo);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
fragment.setArguments(bundle);
|
||||
fragment.setOnDismissListener(dialog -> checkMsgRed());
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setPk(isPk)
|
||||
.setLiveGuardInfo(mLiveGuardInfo));
|
||||
});
|
||||
}
|
||||
|
||||
@ -462,16 +461,13 @@ public class LiveAudienceActivity extends LiveActivity {
|
||||
if (TextUtils.isEmpty(mLiveUid) || TextUtils.isEmpty(mStream)) {
|
||||
return;
|
||||
}
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
fragment.setPkStatus(isPk);
|
||||
fragment.setLiveGuardInfo(mLiveGuardInfo);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
bundle.putString(Constants.LIVE_WISH_GIFTID, giftId);
|
||||
fragment.setArguments(bundle);
|
||||
fragment.setOnDismissListener(dialog -> checkMsgRed());
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setPk(isPk)
|
||||
.setLiveGuardInfo(mLiveGuardInfo)
|
||||
.setmWishGiftId(giftId));
|
||||
}
|
||||
|
||||
public void openGiftWindow(String giftId, String for_by) {
|
||||
@ -479,19 +475,15 @@ public class LiveAudienceActivity extends LiveActivity {
|
||||
return;
|
||||
}
|
||||
new Handler(Looper.getMainLooper()).post(() -> {
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
fragment.setPkStatus(isPk);
|
||||
fragment.setLiveGuardInfo(mLiveGuardInfo);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
bundle.putString(Constants.LIVE_WISH_GIFTID, giftId);
|
||||
if (for_by.equals("1")) {
|
||||
bundle.putString("by", "1");
|
||||
}
|
||||
fragment.setArguments(bundle);
|
||||
fragment.setOnDismissListener(dialog -> checkMsgRed());
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setPk(isPk)
|
||||
.setLiveGuardInfo(mLiveGuardInfo)
|
||||
.setmWishGiftId(giftId)
|
||||
.setUname("1"));//setUname==by
|
||||
});
|
||||
|
||||
}
|
||||
@ -1023,18 +1015,29 @@ public class LiveAudienceActivity extends LiveActivity {
|
||||
break;
|
||||
|
||||
case GIFT_POPUP:
|
||||
|
||||
if (TextUtils.isEmpty(mLiveUid) || TextUtils.isEmpty(mStream)) {
|
||||
return;
|
||||
}
|
||||
LiveGiftDialogFragment liveGiftDialogFragment = new LiveGiftDialogFragment();
|
||||
liveGiftDialogFragment.setPkStatus(isPk);
|
||||
liveGiftDialogFragment.setLiveGuardInfo(mLiveGuardInfo);
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
liveGiftDialogFragment.setArguments(bundle);
|
||||
liveGiftDialogFragment.setOnDismissListener(dialog -> checkMsgRed());
|
||||
liveGiftDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
LiveGiftPopup liveGiftPopup = new LiveGiftPopup();
|
||||
bundle.putString("mLiveUid", mLiveUid);
|
||||
bundle.putString("mStream", mStream);
|
||||
bundle.putString("WishGiftId", event.getmWishGiftId());
|
||||
bundle.putBoolean("ContactGift", event.getIsContactGift());
|
||||
bundle.putParcelable("GuardInfo", event.getLiveGuardInfo());
|
||||
bundle.putBoolean("pk", event.isPk());
|
||||
liveGiftPopup.setArguments(bundle);
|
||||
liveGiftPopup.show(getSupportFragmentManager(), "LiveGiftPopup");
|
||||
// new XPopup.Builder(mContext)
|
||||
// .asCustom(new LiveGiftPopup(mContext, this))
|
||||
// .show();
|
||||
// if (TextUtils.isEmpty(mLiveUid) || TextUtils.isEmpty(mStream)) {
|
||||
// return;
|
||||
// }
|
||||
// LiveGiftDialogFragment liveGiftDialogFragment = new LiveGiftDialogFragment();
|
||||
// liveGiftDialogFragment.setPkStatus(isPk);
|
||||
// liveGiftDialogFragment.setLiveGuardInfo(mLiveGuardInfo);
|
||||
// bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
// bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
// liveGiftDialogFragment.setArguments(bundle);
|
||||
// liveGiftDialogFragment.setOnDismissListener(dialog -> checkMsgRed());
|
||||
// liveGiftDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
break;
|
||||
case CURRENT_ACTIVITY:
|
||||
String type = event.getModel().getActiveId();
|
||||
|
@ -0,0 +1,69 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.event.LiveGiftItemEvent;
|
||||
import com.yunbao.live.views.FrameGiftViewHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class FrameGiftAdapter extends RecyclerView.Adapter {
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private String mStream, mLiveUid, wishGiftId;
|
||||
|
||||
public FrameGiftAdapter(int contextLayoutGiftHeight, List<LiveGiftBean> giftJson, String mStream, String mLiveUid, String wishGiftId) {
|
||||
this.contextLayoutGiftHeight = contextLayoutGiftHeight;
|
||||
this.giftJson = giftJson;
|
||||
this.mStream = mStream;
|
||||
this.mLiveUid = mLiveUid;
|
||||
this.wishGiftId = wishGiftId;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_frame_gift, parent, false);
|
||||
return new FrameGiftViewHolder(herdView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
|
||||
if (!TextUtils.isEmpty(wishGiftId) && TextUtils.equals(giftJson.get(position).getId() + "", wishGiftId)) {
|
||||
Bus.get().post(new LiveGiftItemEvent().setLiveGiftModel(giftJson.get(position)));
|
||||
}
|
||||
|
||||
FrameGiftViewHolder frameGiftViewHolder = (FrameGiftViewHolder) holder;
|
||||
frameGiftViewHolder.showData(contextLayoutGiftHeight, giftJson.get(position));
|
||||
frameGiftViewHolder.giftSelect(giftJson.get(position), position, mStream, mLiveUid, new FrameGiftViewHolder.FrameGiftClickListener() {
|
||||
@Override
|
||||
public void onCallBack(int position, LiveGiftBean model) {
|
||||
Bus.get().post(new LiveGiftItemEvent().setLiveGiftModel(model));
|
||||
wishGiftId = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void giftSelect(LiveGiftBean model) {
|
||||
for (int i = 0; i < giftJson.size(); i++) {
|
||||
giftJson.get(i).setChecked(giftJson.get(i).getId() == model.getId());
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return giftJson.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.bean.GiftTopBean;
|
||||
import com.yunbao.live.views.GiftTitleViewHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class GiftTitleAdapter extends RecyclerView.Adapter {
|
||||
|
||||
List<GiftTopBean> name = new ArrayList<>();
|
||||
private int index = 0;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_gift_top_new, parent, false);
|
||||
return new GiftTitleViewHolder(herdView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
GiftTitleViewHolder itemViewHolder = (GiftTitleViewHolder) holder;
|
||||
itemViewHolder.showData(name.get(position), position, new GiftTitleViewHolder.ClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks(int mPosition) {
|
||||
index = mPosition;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
itemViewHolder.selectData(index == position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return name.size();
|
||||
}
|
||||
|
||||
public void addAllData(List<GiftTopBean> giftTopBeans) {
|
||||
name.clear();
|
||||
name.addAll(giftTopBeans);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void uncheck() {
|
||||
index = -1;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LiveGiftFragmentPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
private List<Fragment> fragmentList;
|
||||
|
||||
|
||||
public LiveGiftFragmentPagerAdapter(FragmentManager fm, Context mContext, List<Fragment> fragmentList) {
|
||||
super(fm);
|
||||
|
||||
this.fragmentList = fragmentList;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int i) {
|
||||
return fragmentList.get(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return fragmentList.size();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.event.LiveGiftItemEvent;
|
||||
import com.yunbao.live.views.LiveParcelItemViewHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LiveParcelItemAdapter extends RecyclerView.Adapter {
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private String mStream, mLiveUid;
|
||||
|
||||
public LiveParcelItemAdapter(int contextLayoutGiftHeight, List<LiveGiftBean> giftJson, String mStream, String mLiveUid) {
|
||||
this.contextLayoutGiftHeight = contextLayoutGiftHeight;
|
||||
this.giftJson = giftJson;
|
||||
this.mStream = mStream;
|
||||
this.mLiveUid = mLiveUid;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_live_parcel, parent, false);
|
||||
return new LiveParcelItemViewHolder(herdView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
LiveParcelItemViewHolder frameGiftViewHolder = (LiveParcelItemViewHolder) holder;
|
||||
frameGiftViewHolder.showData(contextLayoutGiftHeight, giftJson.get(position));
|
||||
frameGiftViewHolder.giftSelect(giftJson.get(position), position, mStream, mLiveUid, new LiveParcelItemViewHolder.FrameGiftClickListener() {
|
||||
@Override
|
||||
public void onCallBack(int position, LiveGiftBean model) {
|
||||
Bus.get().post(new LiveGiftItemEvent().setLiveGiftModel(model));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void giftSelect(LiveGiftBean model) {
|
||||
for (int i = 0; i < giftJson.size(); i++) {
|
||||
giftJson.get(i).setChecked(giftJson.get(i).getId() == model.getId());
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void refreshWrapListAfterSend(LiveGiftBean model) {
|
||||
for (int i = 0; i < giftJson.size(); i++) {
|
||||
if (giftJson.get(i).getId() == model.getId()) {
|
||||
|
||||
|
||||
String giftNum = giftJson.get(i).getGiftNum();
|
||||
int number = 0;
|
||||
try {
|
||||
number = Integer.parseInt(giftNum);
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
number = 0;
|
||||
}
|
||||
if (number == 1) {
|
||||
|
||||
giftJson.remove(i);
|
||||
} else {
|
||||
giftJson.get(i).setGiftNum(String.valueOf(number - 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return giftJson.size();
|
||||
}
|
||||
}
|
115
live/src/main/java/com/yunbao/live/bean/CoinModel.java
Normal file
@ -0,0 +1,115 @@
|
||||
package com.yunbao.live.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
|
||||
public class CoinModel extends BaseModel {
|
||||
//钻石余额
|
||||
@SerializedName("coin")
|
||||
private String coin;
|
||||
//金豆余额
|
||||
@SerializedName("gold")
|
||||
private String gold;
|
||||
|
||||
@SerializedName("uid")
|
||||
private String uid;
|
||||
//平台最大等级
|
||||
@SerializedName("user_level_max")
|
||||
private String userLevelMax;
|
||||
//当前用户等级
|
||||
@SerializedName("user_level")
|
||||
private String userLevel;
|
||||
//升级下一级需要的经验
|
||||
@SerializedName("user_next_level_rewards")
|
||||
private String userNextLevelRewards;
|
||||
//当前已经获取到的经验值
|
||||
@SerializedName("user_level_current_consumption")
|
||||
private String userLevelCurrentConsumption;
|
||||
//升级需要的经验值(总的)
|
||||
@SerializedName("user_level_upgrades")
|
||||
private String userLevelUpgrades;
|
||||
//包裹红点
|
||||
@SerializedName("users_pack_red_dot")
|
||||
private String usersPackRedDot;
|
||||
|
||||
public String getCoin() {
|
||||
return coin;
|
||||
}
|
||||
|
||||
public CoinModel setCoin(String coin) {
|
||||
this.coin = coin;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGold() {
|
||||
return gold;
|
||||
}
|
||||
|
||||
public CoinModel setGold(String gold) {
|
||||
this.gold = gold;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUid() {
|
||||
return uid;
|
||||
}
|
||||
|
||||
public CoinModel setUid(String uid) {
|
||||
this.uid = uid;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUserLevelMax() {
|
||||
return userLevelMax;
|
||||
}
|
||||
|
||||
public CoinModel setUserLevelMax(String userLevelMax) {
|
||||
this.userLevelMax = userLevelMax;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUserLevel() {
|
||||
return userLevel;
|
||||
}
|
||||
|
||||
public CoinModel setUserLevel(String userLevel) {
|
||||
this.userLevel = userLevel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUserNextLevelRewards() {
|
||||
return userNextLevelRewards;
|
||||
}
|
||||
|
||||
public CoinModel setUserNextLevelRewards(String userNextLevelRewards) {
|
||||
this.userNextLevelRewards = userNextLevelRewards;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUserLevelCurrentConsumption() {
|
||||
return userLevelCurrentConsumption;
|
||||
}
|
||||
|
||||
public CoinModel setUserLevelCurrentConsumption(String userLevelCurrentConsumption) {
|
||||
this.userLevelCurrentConsumption = userLevelCurrentConsumption;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUserLevelUpgrades() {
|
||||
return userLevelUpgrades;
|
||||
}
|
||||
|
||||
public CoinModel setUserLevelUpgrades(String userLevelUpgrades) {
|
||||
this.userLevelUpgrades = userLevelUpgrades;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUsersPackRedDot() {
|
||||
return usersPackRedDot;
|
||||
}
|
||||
|
||||
public CoinModel setUsersPackRedDot(String usersPackRedDot) {
|
||||
this.usersPackRedDot = usersPackRedDot;
|
||||
return this;
|
||||
}
|
||||
}
|
1100
live/src/main/java/com/yunbao/live/dialog/LiveGiftPopup.java
Normal file
26
live/src/main/java/com/yunbao/live/event/GiftTitleEvent.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.yunbao.live.event;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
|
||||
public class GiftTitleEvent extends BaseModel {
|
||||
private String giftTitle;
|
||||
private int mPosition;
|
||||
|
||||
public int getmPosition() {
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
public GiftTitleEvent setmPosition(int mPosition) {
|
||||
this.mPosition = mPosition;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGiftTitle() {
|
||||
return giftTitle;
|
||||
}
|
||||
|
||||
public GiftTitleEvent setGiftTitle(String giftTitle) {
|
||||
this.giftTitle = giftTitle;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -14,6 +14,7 @@ import com.yunbao.common.bean.WishModel;
|
||||
import com.yunbao.common.bean.XydCompleteModel;
|
||||
import com.yunbao.common.event.AllServerNotifyEvent;
|
||||
import com.yunbao.common.event.CustomFullServiceNotifyEvent;
|
||||
import com.yunbao.live.bean.LiveGuardInfo;
|
||||
import com.yunbao.live.bean.LivePKUserListBean;
|
||||
import com.yunbao.live.bean.LiveReceiveGiftBean;
|
||||
import com.yunbao.live.bean.OpenParametersModel;
|
||||
@ -49,6 +50,75 @@ public class LiveAudienceEvent extends BaseModel {
|
||||
private RedPacketModel redPacketModel;
|
||||
private RedPacketInfoModel redPacketInfoModel;
|
||||
private OlineUserlistModel olineUserlistModel;
|
||||
private LiveGuardInfo liveGuardInfo;
|
||||
private String mWishGiftId;
|
||||
private boolean isContactGift;
|
||||
private boolean isPk;
|
||||
public String mStream;
|
||||
public String mLiveUid,giftId;
|
||||
|
||||
public String getGiftId() {
|
||||
return giftId;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setGiftId(String giftId) {
|
||||
this.giftId = giftId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getmStream() {
|
||||
return mStream;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setmStream(String mStream) {
|
||||
this.mStream = mStream;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getmLiveUid() {
|
||||
return mLiveUid;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setmLiveUid(String mLiveUid) {
|
||||
this.mLiveUid = mLiveUid;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isPk() {
|
||||
return isPk;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setPk(boolean pk) {
|
||||
isPk = pk;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean getIsContactGift() {
|
||||
return isContactGift;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setIsContactGift(boolean isContactGift) {
|
||||
this.isContactGift = isContactGift;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getmWishGiftId() {
|
||||
return mWishGiftId;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setmWishGiftId(String mWishGiftId) {
|
||||
this.mWishGiftId = mWishGiftId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LiveGuardInfo getLiveGuardInfo() {
|
||||
return liveGuardInfo;
|
||||
}
|
||||
|
||||
public LiveAudienceEvent setLiveGuardInfo(LiveGuardInfo liveGuardInfo) {
|
||||
this.liveGuardInfo = liveGuardInfo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public OlineUserlistModel getOlineUserlistModel() {
|
||||
return olineUserlistModel;
|
||||
|
@ -0,0 +1,20 @@
|
||||
package com.yunbao.live.event;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
|
||||
/**
|
||||
* 选中的礼物
|
||||
*/
|
||||
public class LiveGiftItemEvent extends BaseModel {
|
||||
private LiveGiftBean liveGiftModel;
|
||||
|
||||
public LiveGiftBean getLiveGiftModel() {
|
||||
return liveGiftModel;
|
||||
}
|
||||
|
||||
public LiveGiftItemEvent setLiveGiftModel(LiveGiftBean liveGiftModel) {
|
||||
this.liveGiftModel = liveGiftModel;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.yunbao.live.event;
|
||||
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
|
||||
public class LiveParcelItemRefreshEvent extends BaseModel {
|
||||
private LiveGiftBean liveGiftModel;
|
||||
|
||||
public LiveGiftBean getLiveGiftModel() {
|
||||
return liveGiftModel;
|
||||
}
|
||||
|
||||
public LiveParcelItemRefreshEvent setLiveGiftModel(LiveGiftBean liveGiftModel) {
|
||||
this.liveGiftModel = liveGiftModel;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -6,7 +6,6 @@ import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
@ -46,6 +45,7 @@ import com.yunbao.common.http.CommonHttpUtil;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.interfaces.CommonCallback;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.GiftCacheUtil;
|
||||
import com.yunbao.common.utils.HtmlTagHandler;
|
||||
@ -53,12 +53,11 @@ import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.activity.LiveAudienceActivity;
|
||||
import com.yunbao.live.bean.LiveGiftPrizePoolWinBean;
|
||||
import com.yunbao.live.bean.LiveLuckGiftWinBean;
|
||||
import com.yunbao.live.bean.LiveReceiveGiftBean;
|
||||
import com.yunbao.live.custom.FrameImageView;
|
||||
import com.yunbao.live.dialog.LiveGiftDialogFragment;
|
||||
import com.yunbao.live.event.LiveAudienceEvent;
|
||||
import com.yunbao.live.event.LiveRoomChangeEvent;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
import com.yunbao.live.utils.AllMsgTextRender;
|
||||
@ -339,14 +338,12 @@ public class LiveGiftAnimPresenter {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
bundle.putString(Constants.LIVE_WISH_GIFTID, blindBox.getEvent().getBlindBoxId() + "");
|
||||
bundle.putBoolean("isContactGift", true);
|
||||
fragment.setArguments(bundle);
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setmWishGiftId(blindBox.getEvent().getBlindBoxId() + "")
|
||||
.setIsContactGift(true));
|
||||
}
|
||||
}, 1000);
|
||||
} else {
|
||||
|
@ -0,0 +1,158 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.animation.AccelerateDecelerateInterpolator;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.view.animation.ScaleAnimation;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.interfaces.CommonCallback;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.GiftCacheUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.dialog.SendRendPacketPopup;
|
||||
import com.yunbao.live.event.LiveGiftDialogEvent;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class FrameGiftViewHolder extends RecyclerView.ViewHolder {
|
||||
private ImageView giftIcon, mPayIco, cornerMark;
|
||||
private Context mContext;
|
||||
private TextView giftName, mPrice;
|
||||
private RelativeLayout giftLayout;
|
||||
private ScaleAnimation mAnimation;
|
||||
private LinearLayout mLoadingLayout;
|
||||
private ImageView mLoading;
|
||||
|
||||
public FrameGiftViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
mContext = itemView.getContext();
|
||||
giftIcon = itemView.findViewById(R.id.gift_icon);
|
||||
giftName = itemView.findViewById(R.id.gift_name);
|
||||
mPayIco = itemView.findViewById(R.id.pay_ico);
|
||||
mPrice = itemView.findViewById(R.id.price);
|
||||
cornerMark = itemView.findViewById(R.id.corner_mark);
|
||||
giftLayout = itemView.findViewById(R.id.gift_layout);
|
||||
mLoadingLayout = itemView.findViewById(R.id.gift_loading_layout);
|
||||
mLoading = itemView.findViewById(R.id.gift_loading);
|
||||
|
||||
mAnimation = new ScaleAnimation(0.9f, 1.1f, 0.9f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
||||
mAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
|
||||
mAnimation.setDuration(400);
|
||||
mAnimation.setRepeatMode(Animation.REVERSE);
|
||||
mAnimation.setRepeatCount(-1);
|
||||
}
|
||||
|
||||
public void showData(int contextLayoutGiftHeight, LiveGiftBean model) {
|
||||
//设置高度
|
||||
itemView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GridLayoutManager.LayoutParams linearParams = (GridLayoutManager.LayoutParams) itemView.getLayoutParams();
|
||||
linearParams.height = contextLayoutGiftHeight / 2;
|
||||
itemView.setLayoutParams(linearParams);
|
||||
}
|
||||
});
|
||||
giftLayout.setSelected(model.isChecked());
|
||||
if (model.isChecked()) {
|
||||
giftIcon.startAnimation(mAnimation);
|
||||
}
|
||||
ImgLoader.display(mContext, model.getIcon(), giftIcon);
|
||||
ImgLoader.display(mContext, model.getCornerMark(), cornerMark);
|
||||
giftName.setText(model.getName());
|
||||
//特殊礼物红包
|
||||
if (model.getType() == 9999999) {
|
||||
mPayIco.setVisibility(View.GONE);
|
||||
mPrice.setText(mContext.getString(R.string.build_up_popularity));
|
||||
mPrice.setTextColor(Color.parseColor("#db8c4a"));
|
||||
mPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP, 8);
|
||||
|
||||
} else {
|
||||
mPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11);
|
||||
mPrice.setTextColor(Color.parseColor("#c8c8c8"));
|
||||
mPayIco.setVisibility(View.VISIBLE);
|
||||
//普通礼物
|
||||
if (model.getSendType() != null && model.getSendType().equals("1")) {
|
||||
mPayIco.setImageResource(R.mipmap.gold_coin);
|
||||
} else {
|
||||
mPayIco.setImageResource(R.mipmap.diamond);
|
||||
}
|
||||
mPrice.setText(model.getPrice());
|
||||
}
|
||||
if (model.getSwf() != null && model.getSwf().isEmpty()) {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
mLoadingLayout.setVisibility(GiftCacheUtil.checkGiftIsDownload(model.getId()) ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void giftSelect(LiveGiftBean model, int position, String mStream, String mLiveUid, FrameGiftClickListener frameGiftClickListener) {
|
||||
ViewClicksAntiShake.clicksAntiShake(mLoadingLayout, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
mLoading.setImageResource(R.mipmap.icon_loading_gift);
|
||||
Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.anim_loading_gift);
|
||||
animation.setRepeatMode(Animation.RESTART);
|
||||
animation.setRepeatCount(Animation.INFINITE);
|
||||
animation.setInterpolator(new LinearInterpolator());
|
||||
mLoading.startAnimation(animation);
|
||||
GiftCacheUtil.getInstance().pause();
|
||||
GiftCacheUtil.getInstance().downloadGiftForId(mContext, model, new CommonCallback<File>() {
|
||||
@Override
|
||||
public void callback(File bean) {
|
||||
if (bean == null) {
|
||||
ToastUtil.show(mContext.getString(R.string.load_failure_2));
|
||||
mLoading.setImageResource(R.mipmap.icon_download_gift);
|
||||
animation.setRepeatCount(0);
|
||||
animation.setDuration(0);
|
||||
animation.cancel();
|
||||
mLoading.setAnimation(animation);
|
||||
} else {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
}
|
||||
GiftCacheUtil.getInstance().restart();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
ViewClicksAntiShake.clicksAntiShake(giftLayout, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
if (model.getType() == 9999999) {
|
||||
Bus.get().post(new LiveGiftDialogEvent());
|
||||
new XPopup.Builder(mContext)
|
||||
.asCustom(new SendRendPacketPopup(mContext, mLiveUid))
|
||||
.show();
|
||||
} else {
|
||||
if (frameGiftClickListener != null) {
|
||||
frameGiftClickListener.onCallBack(position, model);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface FrameGiftClickListener {
|
||||
void onCallBack(int position, LiveGiftBean model);
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.graphics.Typeface;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.custom.DrawableTextView;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.bean.GiftTopBean;
|
||||
import com.yunbao.live.event.GiftTitleEvent;
|
||||
|
||||
public class GiftTitleViewHolder extends RecyclerView.ViewHolder {
|
||||
private DrawableTextView name;
|
||||
|
||||
public GiftTitleViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
name = itemView.findViewById(R.id.name);
|
||||
}
|
||||
|
||||
public void showData(GiftTopBean giftTopBean, int mPosition, ClicksCallBack callBack) {
|
||||
name.setText(giftTopBean.getName());
|
||||
ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
if (callBack != null) {
|
||||
callBack.onViewClicks(mPosition);
|
||||
Bus.get().post(new GiftTitleEvent().setmPosition(mPosition).setGiftTitle(giftTopBean.getName()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void selectData(boolean isSelect) {
|
||||
if (isSelect) {
|
||||
name.setAlpha(1.0f);
|
||||
name.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
|
||||
} else {
|
||||
name.setAlpha(0.5f);
|
||||
name.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
public interface ClicksCallBack {
|
||||
void onViewClicks(int mPosition);
|
||||
}
|
||||
}
|
@ -10,7 +10,6 @@ import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Vibrator;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@ -20,16 +19,12 @@ import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ViewFlipper;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.opensource.svgaplayer.SVGADrawable;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.opensource.svgaplayer.SVGAParser;
|
||||
import com.opensource.svgaplayer.SVGAVideoEntity;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.Constants;
|
||||
import com.yunbao.common.bean.NewPeopleInfo;
|
||||
@ -39,11 +34,10 @@ import com.yunbao.common.http.API;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.http.HttpClient;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.ProcessResultUtil;
|
||||
import com.yunbao.common.utils.SVGAViewUtils;
|
||||
import com.yunbao.common.utils.SpUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.live.dialog.LiveGiftPopup;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.activity.LiveActivity;
|
||||
@ -200,6 +194,7 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
|
||||
ViewClicksAntiShake.clicksAntiShake(giftImage, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP));
|
||||
}
|
||||
@ -382,6 +377,7 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
|
||||
|
||||
} else if (i == R.id.btn_gift) {
|
||||
openGiftWindow();
|
||||
|
||||
//全屏
|
||||
} else if (i == R.id.btn_more) {
|
||||
((LiveActivity) mContext).openMoreWindow();
|
||||
|
149
live/src/main/java/com/yunbao/live/views/LiveGiftFragment.java
Normal file
@ -0,0 +1,149 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.fragment.BaseFragment;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.adapter.LiveGiftFragmentPagerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 礼物列表
|
||||
*/
|
||||
public class LiveGiftFragment extends BaseFragment {
|
||||
private ViewPager fragmentViewpager;
|
||||
private int pageCount;
|
||||
private static final int GIFT_COUNT = 8;//每页8个礼物
|
||||
private RadioGroup mRadioGroup;
|
||||
private LiveGiftFragmentPagerAdapter giftFragmentPagerAdapter;
|
||||
private ArrayList<Fragment> ViewList = new ArrayList<>(); //页卡视图集合
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private String mStream, mLiveUid, wishGiftId, type;
|
||||
private int currentPage = 0;
|
||||
|
||||
@Override
|
||||
public View createView(LayoutInflater layoutInflater, ViewGroup viewGroup) {
|
||||
return layoutInflater.inflate(R.layout.fragment_live_gift, viewGroup, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initVariables(Bundle bundle) {
|
||||
giftJson = JSON.parseArray(bundle.getString("giftJson"), LiveGiftBean.class);
|
||||
contextLayoutGiftHeight = bundle.getInt("contextLayoutGiftHeight");
|
||||
mStream = bundle.getString("mStream");
|
||||
wishGiftId = bundle.getString("wishGiftId");
|
||||
mLiveUid = bundle.getString("mLiveUid");
|
||||
type = bundle.getString("type");
|
||||
pageCount = giftJson.size() / GIFT_COUNT;
|
||||
if (giftJson.size() % GIFT_COUNT > 0) {
|
||||
pageCount++;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(Bundle savedInstanceState, View contentView) {
|
||||
|
||||
fragmentViewpager = contentView.findViewById(R.id.context_layout);
|
||||
mRadioGroup = contentView.findViewById(R.id.radio_group);
|
||||
|
||||
|
||||
fragmentViewpager.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
contextLayoutGiftHeight = fragmentViewpager.getHeight();
|
||||
Log.e("giftJson", "height=" + contextLayoutGiftHeight);
|
||||
int fromIndex = 0;
|
||||
int size = giftJson.size();
|
||||
for (int i = 0; i < pageCount; i++) {
|
||||
int endIndex = fromIndex + GIFT_COUNT;
|
||||
if (endIndex > size) {
|
||||
endIndex = size;
|
||||
}
|
||||
List<LiveGiftBean> liveGiftBeans = new ArrayList<>();
|
||||
for (int j = fromIndex; j < endIndex; j++) {
|
||||
LiveGiftBean bean = giftJson.get(j);
|
||||
bean.setPage(i);
|
||||
liveGiftBeans.add(bean);
|
||||
if (!TextUtils.isEmpty(wishGiftId) && TextUtils.equals(bean.getId() + "", wishGiftId)) {
|
||||
currentPage = i;
|
||||
Log.e("LiveGiftItemFragment", type);
|
||||
}
|
||||
}
|
||||
fromIndex = endIndex;
|
||||
ViewList.add(LiveGiftItemFragment.newInstance(JSON.toJSONString(liveGiftBeans), contextLayoutGiftHeight, mStream, mLiveUid, wishGiftId));
|
||||
}
|
||||
giftFragmentPagerAdapter = new LiveGiftFragmentPagerAdapter(getChildFragmentManager(), getActivity(), ViewList);
|
||||
fragmentViewpager.setAdapter(giftFragmentPagerAdapter);
|
||||
|
||||
LayoutInflater inflater = LayoutInflater.from(getContext());
|
||||
for (int i = 0, size2 = ViewList.size(); i < size2; i++) {
|
||||
RadioButton radioButton = (RadioButton) inflater.inflate(R.layout.view_gift_indicator, mRadioGroup, false);
|
||||
radioButton.setId(i + 10000);
|
||||
if (i == 0) {
|
||||
radioButton.setChecked(true);
|
||||
}
|
||||
mRadioGroup.addView(radioButton);
|
||||
|
||||
}
|
||||
fragmentViewpager.setCurrentItem(currentPage);
|
||||
//移除监听
|
||||
fragmentViewpager.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
}
|
||||
});
|
||||
|
||||
fragmentViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
if (mRadioGroup != null && mRadioGroup.getChildAt(position) != null) {
|
||||
((RadioButton) mRadioGroup.getChildAt(position)).setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadData() {
|
||||
|
||||
}
|
||||
|
||||
public static LiveGiftFragment newInstance(String giftJson, String type,
|
||||
String mStream, String mLiveUid, String wishGiftId) {
|
||||
LiveGiftFragment liveGiftFragment = new LiveGiftFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("giftJson", giftJson);
|
||||
bundle.putString("type", type);
|
||||
bundle.putString("mStream", mStream);
|
||||
bundle.putString("mLiveUid", mLiveUid);
|
||||
bundle.putString("wishGiftId", wishGiftId);
|
||||
liveGiftFragment.setArguments(bundle);
|
||||
return liveGiftFragment;
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.fragment.BaseFragment;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.adapter.FrameGiftAdapter;
|
||||
import com.yunbao.live.event.LiveGiftItemEvent;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LiveGiftItemFragment extends BaseFragment {
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private RecyclerView frameGiftList;
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private FrameGiftAdapter frameGiftAdapter;
|
||||
private String mStream, mLiveUid, wishGiftId;
|
||||
|
||||
@Override
|
||||
public View createView(LayoutInflater layoutInflater, ViewGroup viewGroup) {
|
||||
return layoutInflater.inflate(R.layout.fragment_live_gift_item, viewGroup, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initVariables(Bundle bundle) {
|
||||
giftJson = JSON.parseArray(bundle.getString("giftJson"), LiveGiftBean.class);
|
||||
contextLayoutGiftHeight = bundle.getInt("contextLayoutGiftHeight");
|
||||
mStream = bundle.getString("mStream");
|
||||
mLiveUid = bundle.getString("mLiveUid");
|
||||
wishGiftId = bundle.getString("wishGiftId");
|
||||
Log.e("giftJson", giftJson.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(Bundle savedInstanceState, View contentView) {
|
||||
|
||||
|
||||
frameGiftList = contentView.findViewById(R.id.frame_gift_list);
|
||||
frameGiftList.setHasFixedSize(true);
|
||||
frameGiftList.setLayoutManager(new GridLayoutManager(getActivity(), 4, GridLayoutManager.VERTICAL, false));
|
||||
frameGiftAdapter = new FrameGiftAdapter(contextLayoutGiftHeight, giftJson, mStream, mLiveUid, wishGiftId);
|
||||
frameGiftList.setAdapter(frameGiftAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadData() {
|
||||
|
||||
}
|
||||
|
||||
public static LiveGiftItemFragment newInstance(String giftJson, int contextLayoutGiftHeight,
|
||||
String mStream, String mLiveUid, String wishGiftId) {
|
||||
LiveGiftItemFragment liveGiftFragment = new LiveGiftItemFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("giftJson", giftJson);
|
||||
bundle.putInt("contextLayoutGiftHeight", contextLayoutGiftHeight);
|
||||
bundle.putString("mStream", mStream);
|
||||
bundle.putString("mLiveUid", mLiveUid);
|
||||
bundle.putString("wishGiftId", wishGiftId);
|
||||
liveGiftFragment.setArguments(bundle);
|
||||
return liveGiftFragment;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLiveGiftItemEvent(LiveGiftItemEvent event) {
|
||||
frameGiftAdapter.giftSelect(event.getLiveGiftModel());
|
||||
}
|
||||
}
|
162
live/src/main/java/com/yunbao/live/views/LiveParcelFragment.java
Normal file
@ -0,0 +1,162 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.fragment.BaseFragment;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.utils.GiftCacheUtil;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.adapter.LiveGiftFragmentPagerAdapter;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LiveParcelFragment extends BaseFragment {
|
||||
private ViewPager fragmentViewpager;
|
||||
private int pageCount;
|
||||
private static final int GIFT_COUNT = 8;//每页8个礼物
|
||||
private RadioGroup mRadioGroup;
|
||||
private LiveGiftFragmentPagerAdapter giftFragmentPagerAdapter;
|
||||
private ArrayList<Fragment> ViewList = new ArrayList<>(); //页卡视图集合
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private String mStream, mLiveUid;
|
||||
private LinearLayout parcelDataList, parcelDataNo;
|
||||
|
||||
@Override
|
||||
public View createView(LayoutInflater layoutInflater, ViewGroup viewGroup) {
|
||||
return layoutInflater.inflate(R.layout.fragment_live_parcel, viewGroup, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initVariables(Bundle bundle) {
|
||||
mStream = bundle.getString("mStream");
|
||||
mLiveUid = bundle.getString("mLiveUid");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(Bundle savedInstanceState, View contentView) {
|
||||
fragmentViewpager = contentView.findViewById(R.id.context_layout);
|
||||
mRadioGroup = contentView.findViewById(R.id.radio_group);
|
||||
parcelDataList = contentView.findViewById(R.id.parcel_data_list);
|
||||
parcelDataNo = contentView.findViewById(R.id.parcel_data_no);
|
||||
|
||||
fragmentViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
if (mRadioGroup != null && mRadioGroup.getChildAt(position) != null) {
|
||||
((RadioButton) mRadioGroup.getChildAt(position)).setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadData() {
|
||||
LiveHttpUtil.getWrapList(new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
if (code == 0 && info.length > 0) {
|
||||
JSONObject obj = JSON.parseObject(info[0]);
|
||||
String giftJson = obj.getString("giftlist");
|
||||
List<LiveGiftBean> list = JSON.parseArray(giftJson, LiveGiftBean.class);
|
||||
GiftCacheUtil.getInstance().addDownloadList(list);
|
||||
if (!GiftCacheUtil.getInstance().isDownloading()) {
|
||||
GiftCacheUtil.getInstance().downloadAllGift();
|
||||
}
|
||||
if (list.size() == 0) {
|
||||
parcelDataNo.setVisibility(View.VISIBLE);
|
||||
parcelDataList.setVisibility(View.GONE);
|
||||
} else {
|
||||
parcelDataList.setVisibility(View.VISIBLE);
|
||||
parcelDataNo.setVisibility(View.GONE);
|
||||
pageCount = list.size() / GIFT_COUNT;
|
||||
if (list.size() % GIFT_COUNT > 0) {
|
||||
pageCount++;
|
||||
}
|
||||
|
||||
fragmentViewpager.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
public void onGlobalLayout() {
|
||||
contextLayoutGiftHeight = fragmentViewpager.getHeight();
|
||||
Log.e("giftJson", "height=" + contextLayoutGiftHeight);
|
||||
int fromIndex = 0;
|
||||
int size = list.size();
|
||||
for (int i = 0; i < pageCount; i++) {
|
||||
int endIndex = fromIndex + GIFT_COUNT;
|
||||
if (endIndex > size) {
|
||||
endIndex = size;
|
||||
}
|
||||
List<LiveGiftBean> liveGiftBeans = new ArrayList<>();
|
||||
for (int j = fromIndex; j < endIndex; j++) {
|
||||
LiveGiftBean bean = list.get(j);
|
||||
bean.setPage(i);
|
||||
liveGiftBeans.add(bean);
|
||||
}
|
||||
fromIndex = endIndex;
|
||||
ViewList.add(LiveParcelItemFragment.newInstance(JSON.toJSONString(liveGiftBeans), contextLayoutGiftHeight, mStream, mLiveUid));
|
||||
}
|
||||
giftFragmentPagerAdapter = new LiveGiftFragmentPagerAdapter(getChildFragmentManager(), getActivity(), ViewList);
|
||||
fragmentViewpager.setAdapter(giftFragmentPagerAdapter);
|
||||
|
||||
LayoutInflater inflater = LayoutInflater.from(getContext());
|
||||
for (int i = 0, size2 = ViewList.size(); i < size2; i++) {
|
||||
RadioButton radioButton = (RadioButton) inflater.inflate(R.layout.view_gift_indicator, mRadioGroup, false);
|
||||
radioButton.setId(i + 10000);
|
||||
if (i == 0) {
|
||||
radioButton.setChecked(true);
|
||||
}
|
||||
mRadioGroup.addView(radioButton);
|
||||
|
||||
}
|
||||
//移除监听
|
||||
fragmentViewpager.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
// if (mLoading != null) {
|
||||
// mLoading.setVisibility(View.INVISIBLE);
|
||||
// }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static LiveParcelFragment newInstance(String mStream, String mLiveUid) {
|
||||
LiveParcelFragment liveParcelFragment = new LiveParcelFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("mStream", mStream);
|
||||
bundle.putString("mLiveUid", mLiveUid);
|
||||
liveParcelFragment.setArguments(bundle);
|
||||
return liveParcelFragment;
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.fragment.BaseFragment;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.adapter.LiveParcelItemAdapter;
|
||||
import com.yunbao.live.event.LiveGiftItemEvent;
|
||||
import com.yunbao.live.event.LiveParcelItemRefreshEvent;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LiveParcelItemFragment extends BaseFragment {
|
||||
private List<LiveGiftBean> giftJson = new ArrayList<>();
|
||||
private RecyclerView frameGiftList;
|
||||
private int contextLayoutGiftHeight = 0;
|
||||
private LiveParcelItemAdapter frameGiftAdapter;
|
||||
private String mStream, mLiveUid;
|
||||
|
||||
@Override
|
||||
public View createView(LayoutInflater layoutInflater, ViewGroup viewGroup) {
|
||||
return layoutInflater.inflate(R.layout.fragment_live_gift_item, viewGroup, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initVariables(Bundle bundle) {
|
||||
giftJson = JSON.parseArray(bundle.getString("giftJson"), LiveGiftBean.class);
|
||||
contextLayoutGiftHeight = bundle.getInt("contextLayoutGiftHeight");
|
||||
mStream = bundle.getString("mStream");
|
||||
mLiveUid = bundle.getString("mLiveUid");
|
||||
Log.e("giftJson", giftJson.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(Bundle savedInstanceState, View contentView) {
|
||||
|
||||
frameGiftList = contentView.findViewById(R.id.frame_gift_list);
|
||||
frameGiftList.setHasFixedSize(true);
|
||||
frameGiftList.setLayoutManager(new GridLayoutManager(getActivity(), 4, GridLayoutManager.VERTICAL, false));
|
||||
frameGiftAdapter = new LiveParcelItemAdapter(contextLayoutGiftHeight, giftJson, mStream, mLiveUid);
|
||||
frameGiftList.setAdapter(frameGiftAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadData() {
|
||||
|
||||
}
|
||||
|
||||
public static LiveParcelItemFragment newInstance(String giftJson, int contextLayoutGiftHeight, String mStream, String mLiveUid) {
|
||||
LiveParcelItemFragment liveGiftFragment = new LiveParcelItemFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("giftJson", giftJson);
|
||||
bundle.putInt("contextLayoutGiftHeight", contextLayoutGiftHeight);
|
||||
bundle.putString("mStream", mStream);
|
||||
bundle.putString("mLiveUid", mLiveUid);
|
||||
liveGiftFragment.setArguments(bundle);
|
||||
return liveGiftFragment;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLiveGiftItemEvent(LiveGiftItemEvent event) {
|
||||
frameGiftAdapter.giftSelect(event.getLiveGiftModel());
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLiveParcelItemRefreshEvent(LiveParcelItemRefreshEvent event) {
|
||||
frameGiftAdapter.refreshWrapListAfterSend(event.getLiveGiftModel());
|
||||
}
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
package com.yunbao.live.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.animation.AccelerateDecelerateInterpolator;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.view.animation.ScaleAnimation;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.interfaces.CommonCallback;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.GiftCacheUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.dialog.SendRendPacketPopup;
|
||||
import com.yunbao.live.event.LiveGiftDialogEvent;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class LiveParcelItemViewHolder extends RecyclerView.ViewHolder {
|
||||
private ImageView giftIcon, cornerMark;
|
||||
private Context mContext;
|
||||
private TextView giftName, mPrice, giftNumber;
|
||||
private RelativeLayout giftLayout;
|
||||
private ScaleAnimation mAnimation;
|
||||
private LinearLayout mLoadingLayout;
|
||||
private ImageView mLoading;
|
||||
|
||||
public LiveParcelItemViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
mContext = itemView.getContext();
|
||||
giftIcon = itemView.findViewById(R.id.gift_icon);
|
||||
giftName = itemView.findViewById(R.id.gift_name);
|
||||
mPrice = itemView.findViewById(R.id.price);
|
||||
giftLayout = itemView.findViewById(R.id.gift_layout);
|
||||
giftNumber = itemView.findViewById(R.id.gift_number);
|
||||
cornerMark = itemView.findViewById(R.id.corner_mark);
|
||||
mLoadingLayout = itemView.findViewById(R.id.gift_loading_layout);
|
||||
mLoading = itemView.findViewById(R.id.gift_loading);
|
||||
|
||||
mAnimation = new ScaleAnimation(0.9f, 1.1f, 0.9f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
||||
mAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
|
||||
mAnimation.setDuration(400);
|
||||
mAnimation.setRepeatMode(Animation.REVERSE);
|
||||
mAnimation.setRepeatCount(-1);
|
||||
}
|
||||
|
||||
public void showData(int contextLayoutGiftHeight, LiveGiftBean model) {
|
||||
//设置高度
|
||||
itemView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GridLayoutManager.LayoutParams linearParams = (GridLayoutManager.LayoutParams) itemView.getLayoutParams();
|
||||
linearParams.height = contextLayoutGiftHeight / 2;
|
||||
itemView.setLayoutParams(linearParams);
|
||||
}
|
||||
});
|
||||
giftLayout.setSelected(model.isChecked());
|
||||
if (model.isChecked()) {
|
||||
giftIcon.startAnimation(mAnimation);
|
||||
}
|
||||
ImgLoader.display(mContext, model.getIcon(), giftIcon);
|
||||
ImgLoader.display(mContext, model.getCornerMark(), cornerMark);
|
||||
giftName.setText(model.getName());
|
||||
mPrice.setText(model.getEnd_time());
|
||||
giftNumber.setText(model.getGiftNum());
|
||||
|
||||
if (model.getSwf() != null && model.getSwf().isEmpty()) {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
mLoadingLayout.setVisibility(GiftCacheUtil.checkGiftIsDownload(model.getId()) ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public void giftSelect(LiveGiftBean model, int position, String mStream, String mLiveUid, FrameGiftClickListener frameGiftClickListener) {
|
||||
ViewClicksAntiShake.clicksAntiShake(mLoadingLayout, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
mLoading.setImageResource(R.mipmap.icon_loading_gift);
|
||||
Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.anim_loading_gift);
|
||||
animation.setRepeatMode(Animation.RESTART);
|
||||
animation.setRepeatCount(Animation.INFINITE);
|
||||
animation.setInterpolator(new LinearInterpolator());
|
||||
mLoading.startAnimation(animation);
|
||||
GiftCacheUtil.getInstance().pause();
|
||||
GiftCacheUtil.getInstance().downloadGiftForId(mContext, model, new CommonCallback<File>() {
|
||||
@Override
|
||||
public void callback(File bean) {
|
||||
if (bean == null) {
|
||||
ToastUtil.show(mContext.getString(R.string.load_failure_2));
|
||||
mLoading.setImageResource(R.mipmap.icon_download_gift);
|
||||
animation.setRepeatCount(0);
|
||||
animation.setDuration(0);
|
||||
animation.cancel();
|
||||
mLoading.setAnimation(animation);
|
||||
} else {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
}
|
||||
GiftCacheUtil.getInstance().restart();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
ViewClicksAntiShake.clicksAntiShake(giftLayout, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
if (model.getType() == 9999999) {
|
||||
Bus.get().post(new LiveGiftDialogEvent());
|
||||
new XPopup.Builder(mContext)
|
||||
.asCustom(new SendRendPacketPopup(mContext, mLiveUid))
|
||||
.show();
|
||||
} else {
|
||||
if (frameGiftClickListener != null) {
|
||||
frameGiftClickListener.onCallBack(position, model);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface FrameGiftClickListener {
|
||||
void onCallBack(int position, LiveGiftBean model);
|
||||
}
|
||||
}
|
@ -150,7 +150,6 @@ import com.yunbao.live.custom.TopGradual;
|
||||
import com.yunbao.live.dialog.LiveFaceUnityDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveFansMedalDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveGameDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveGiftDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveHDDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveUserAnchorMailBoxWebInfoPopDialog;
|
||||
import com.yunbao.live.dialog.LiveUserDialogFragment;
|
||||
@ -5069,23 +5068,13 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
|
||||
|
||||
@Override
|
||||
public void onSuccess(LiveAnchorCallMeModel data) {
|
||||
if (data.getIsGet() == 1) {
|
||||
new LiveUserAnchorMailBoxWebInfoPopDialog(mContext, mAnchorName, data.getLink())
|
||||
.setOnDismissListener(dialog -> loading.dismiss())
|
||||
.showDialog();
|
||||
return;
|
||||
}
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
fragment.setOnDismissListener(dialog -> checkNewLetter()
|
||||
);
|
||||
fragment.setOnShowListener(dialog -> mHandler.postDelayed(loading::dismiss, 500));
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
bundle.putString(Constants.LIVE_WISH_GIFTID, data.getGiftId() + "");
|
||||
bundle.putBoolean("isContactGift", true);
|
||||
fragment.setArguments(bundle);
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
loading.dismiss();
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setmWishGiftId(data.getGiftId() + "")
|
||||
.setIsContactGift(true));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -5147,23 +5136,15 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
|
||||
|
||||
@Override
|
||||
public void onSuccess(LiveAnchorCallMeModel data) {
|
||||
if (data.getIsGet() == 1) {
|
||||
new LiveUserAnchorMailBoxWebInfoPopDialog(mContext, mAnchorName, data.getLink())
|
||||
.setOnDismissListener(dialog -> loading.dismiss())
|
||||
.showDialog();
|
||||
return;
|
||||
}
|
||||
LiveGiftDialogFragment fragment = new LiveGiftDialogFragment();
|
||||
fragment.setOnDismissListener(dialog -> checkNewLetter()
|
||||
);
|
||||
fragment.setOnShowListener(dialog -> mHandler.postDelayed(loading::dismiss, 500));
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(Constants.LIVE_UID, mLiveUid);
|
||||
bundle.putString(Constants.LIVE_STREAM, mStream);
|
||||
bundle.putString(Constants.LIVE_WISH_GIFTID, data.getGiftId() + "");
|
||||
bundle.putBoolean("isContactGift", true);
|
||||
fragment.setArguments(bundle);
|
||||
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGiftDialogFragment");
|
||||
loading.dismiss();
|
||||
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP)
|
||||
.setmLiveUid(mLiveUid)
|
||||
.setmStream(mStream)
|
||||
.setmWishGiftId(data.getGiftId() + "")
|
||||
.setIsContactGift(true));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
13
live/src/main/res/drawable/background_gift_select.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="#e6272C42" />
|
||||
<stroke android:width="0.6dp" android:color="#AEAEB2" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_selected="false">
|
||||
<shape android:shape="rectangle"></shape>
|
||||
</item>
|
||||
</selector>
|
23
live/src/main/res/layout/fragment_live_gift.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/context_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/radio_group"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="6dp"
|
||||
android:layout_gravity="center_horizontal|bottom"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginBottom="9dp"
|
||||
android:orientation="horizontal" />
|
||||
</LinearLayout>
|
13
live/src/main/res/layout/fragment_live_gift_item.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/frame_gift_list"
|
||||
android:layout_width="match_parent"
|
||||
android:overScrollMode="never"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</LinearLayout>
|
52
live/src/main/res/layout/fragment_live_parcel.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/parcel_data_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/context_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/radio_group"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="6dp"
|
||||
android:layout_gravity="center_horizontal|bottom"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginBottom="9dp"
|
||||
android:orientation="horizontal" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/parcel_data_no"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="112dp"
|
||||
android:layout_height="90dp"
|
||||
android:src="@mipmap/icon_empty_parcel" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="@string/nothing_in_the_package_yet"
|
||||
android:textColor="#717375"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
79
live/src/main/res/layout/item_frame_gift.xml
Normal file
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/gift_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/background_gift_select"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_icon"
|
||||
android:layout_width="55dp"
|
||||
android:layout_height="55dp" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/pay_ico"
|
||||
android:layout_width="12dp"
|
||||
android:layout_height="12dp"
|
||||
android:layout_marginEnd="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/price"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/corner_mark"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="11dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginEnd="2dp" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/gift_loading_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#C0000000"
|
||||
android:gravity="center"
|
||||
android:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_loading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="30dp"
|
||||
android:src="@mipmap/icon_download_gift" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
18
live/src/main/res/layout/item_gift_top_new.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.yunbao.common.custom.DrawableTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/live_wrap"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
97
live/src/main/res/layout/item_live_parcel.xml
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/gift_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/background_gift_select"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="55dp">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_icon"
|
||||
android:layout_width="55dp"
|
||||
android:layout_height="55dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="2dp"
|
||||
android:background="@drawable/bg_parcel_point"
|
||||
android:paddingStart="3dp"
|
||||
android:paddingEnd="3dp"
|
||||
android:text="11"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="8sp" />
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/pay_ico"
|
||||
android:layout_width="12dp"
|
||||
android:layout_height="12dp"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/price"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/corner_mark"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="11dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginEnd="2dp" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/gift_loading_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#C0000000"
|
||||
android:gravity="center"
|
||||
android:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_loading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="30dp"
|
||||
android:src="@mipmap/icon_download_gift" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 357 B |