修改商店UI,视频详情充值UI,修改time-zone,新增ffmpeg aar

This commit is contained in:
guozhen 2025-06-19 10:38:28 +08:00
parent a0ae51cc2a
commit 1e80a91833
52 changed files with 1842 additions and 1022 deletions

View File

@ -86,7 +86,8 @@ android {
}
dependencies {
//implementation fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))
implementation fileTree(include: ["*.jar", "*.aar"], dir: 'libs')
implementation libs.appcompat
implementation libs.material
implementation libs.constraintlayout

Binary file not shown.

View File

@ -13,7 +13,7 @@ public class LogUtils {
}
// public static boolean isDebug = ApiService.isDebug;// 是否需要打印bug可以在application的onCreate函数里面初始化
public static boolean isDebug = true;
public static boolean isDebug = false;
// public static boolean isDebug = false;// 是否需要打印bug可以在application的onCreate函数里面初始化
private static final String TAG = "GleeStreamLog";

View File

@ -34,6 +34,10 @@ public class TimeUtils {
}
builder.append(sign);
appendNumber(builder, 2, offsetMinutes / 60);
if (includeMinuteSeparatori) {
builder.append(':');
}
appendNumber(builder, 2, offsetMinutes % 60);
return builder.toString();
}
@ -114,7 +118,7 @@ public class TimeUtils {
long lastOpenTime = TIndicator.getLong(ITItem.CONSTANTS_VipPurchaseTime_key, 0);
if (lastOpenTime != 0) {
long current = System.currentTimeMillis();
if (current - lastOpenTime >=(60 * 60 * 1000) ) { //
if (current - lastOpenTime >= (60 * 60 * 1000)) { //
TIndicator.saveLong(ITItem.CONSTANTS_VipPurchaseTime_key, System.currentTimeMillis());
return true;
} else {

View File

@ -38,7 +38,7 @@ public class PVideoplayRules implements Interceptor {
.addHeader("device-id", FZHeaderSingle.getUniqueId(GPplicationLoadingdefault.getAppContext()))
.addHeader("system-type", "android")
.addHeader("app-name", GPplicationLoadingdefault.getAppContext().getString(R.string.app_name))
.addHeader("time_zone", TimeUtils.getCurrentTimeZone())
.addHeader("time-zone", TimeUtils.getCurrentTimeZone())
.addHeader("app-version", AppUtils.getPackageVersionName(GPplicationLoadingdefault.getAppContext()))
.addHeader("model", Build.MODEL)
// .addHeader("security","false")

View File

@ -28,6 +28,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import com.bumptech.glide.Glide;
@ -817,4 +818,13 @@ public class AExtractionActivity extends IDDetailsRoundActivity<TManifestService
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
}

View File

@ -66,14 +66,34 @@ public class GSAppViewModel extends ViewModel {
VZBack.getInstance().firebaseToken(token)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
.subscribe(new RREStyles<IMACloseStroke>() {
@Override
public void onSuccess(IMACloseStroke o) {
}
@Override
public void onError(int code, String msg) {
}
});
}
public void sendReport(String messageId,String title){
VZBack.getInstance().sendReport(messageId,title)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
.subscribe(new RREStyles<IMACloseStroke>() {
@Override
public void onSuccess(IMACloseStroke o) {
}
@Override
public void onError(int code, String msg) {
}
});
}
}

View File

@ -101,7 +101,7 @@ public class GSMyVipActivity extends IDDetailsRoundActivity<ActivityVipZytBindin
userViewModel.getGooglePay(gsGooglePayInfo);
}, (purchase, str) -> {
PAYLoginHeaddefault.revealToast(str, 0);
if(purchase!=null){
if (purchase != null) {
gsGooglePayInfo = new GSGooglePayInfo();
gsGooglePayInfo.setOrder_code(current_order_code);
gsGooglePayInfo.setPay_setting_id(String.valueOf(current_pay_setting_id));
@ -141,6 +141,7 @@ public class GSMyVipActivity extends IDDetailsRoundActivity<ActivityVipZytBindin
subVipAdapter = new ZYTStoreSubVipAdapter();
binding.recyclerviewMyVip.setAdapter(subVipAdapter);
subVipAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
subVipAdapter.setCurrentPosition(i);
ZYTPaySettingBean.Vip vip = subVipAdapter.getItem(i);
android_template_id = vip.getAndroid_template_id();
current_price = vip.getPrice();

View File

@ -32,6 +32,7 @@ import com.shortdrama.jelly.zyreotv.beginning.ZYTGooglePayUtils;
import com.shortdrama.jelly.zyreotv.databinding.ActivityStoreBinding;
import com.shortdrama.jelly.zyreotv.dlsym.IMACloseStroke;
import com.shortdrama.jelly.zyreotv.topics.abslRwgt.pragma.IDDetailsRoundActivity;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTStoreCoinsRechargeLargeAdapter;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTStoreGoldRechargeAdapter;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTStoreSubVipAdapter;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.GSGooglePayInfo;
@ -65,6 +66,7 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
ZYTGooglePayUtils zytGooglePayUtils;
ZYTStoreGoldRechargeAdapter coinAdapter;
ZYTStoreCoinsRechargeLargeAdapter coinLargerAdapter;
ZYTStoreSubVipAdapter subVipAdapter;
boolean isConnect = false;
@ -106,8 +108,9 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
if (translates != null) {
binding.layoutStoreActionbar.tvToptitle.setText(translates.getGleestream_store());
binding.layoutStoreActionbar.tvToptitleRight.setText(translates.getGleestream_restore());
binding.layoutStoreRoot.tvStoreCoinsepisode.setText(translates.getGleestream_coins());
binding.layoutStoreRoot.tvStoreMembership.setText(translates.getGleestream_membership());
binding.layoutStoreRoot.tvStoreVip.setText(translates.getVip() + " | " + translates.getGleestream_vip_subintroduce());
binding.layoutStoreRoot.tvStoreCoinsepisode.setText(translates.getGleestream_coins_recharge());
// binding.layoutStoreRoot.tvStoreMembership.setText(translates.getGleestream_membership());
binding.layoutStoreRoot.layoutVipIntroduct.tvMembershipIntroduce01.setText(translates.getGleestream_vip_introduct1());
binding.layoutStoreRoot.layoutVipIntroduct.tvMembershipIntroduce02.setText(translates.getGleestream_vip_introduct2());
binding.layoutStoreRoot.layoutVipIntroduct.tvMembershipIntroduce03.setText(translates.getGleestream_vip_introduct3());
@ -179,7 +182,7 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
gsGooglePayInfo.setTransaction_id(purchase.getOrderId());
gsGooglePayInfo.setShow_money(current_price);
vtUserViewModel.getGooglePay(gsGooglePayInfo);
// TIndicator.savePayOrder(gsGooglePayInfo);
// TIndicator.savePayOrder(gsGooglePayInfo);
}, (purchase, str) -> {
binding.loading.hide();
PAYLoginHeaddefault.revealToast(str, 0);
@ -202,8 +205,8 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
runOnUiThread(new Runnable() {
@Override
public void run() {
coinAdapter.submitList(list);
coinLargerAdapter.submitList(listCoins(list, "big"));
coinAdapter.submitList(listCoins(list, "small"));
}
});
}
@ -225,15 +228,32 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
});
vtUserViewModel.getPaySetting(0, 0);
zytGooglePayUtils.startConnection(connect -> isConnect = connect);
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
binding.layoutStoreRoot.recyclerviewStore.setLayoutManager(layoutManager);
GridLayoutManager layoutManager = new GridLayoutManager(this, 3);
GridLayoutManager layoutManagerBig = new GridLayoutManager(this, 2);
binding.layoutStoreRoot.recyclerviewStoreSmall.setLayoutManager(layoutManager);
binding.layoutStoreRoot.recyclerviewStoreLarge.setLayoutManager(layoutManagerBig);
binding.layoutStoreRoot.recyclerviewStoreVip.setLayoutManager(new LinearLayoutManager(this));
binding.layoutStoreActionbar.ivTopback.setOnClickListener(v -> finish());
coinLargerAdapter = new ZYTStoreCoinsRechargeLargeAdapter();
binding.layoutStoreRoot.recyclerviewStoreLarge.setAdapter(coinLargerAdapter);
coinAdapter = new ZYTStoreGoldRechargeAdapter();
binding.layoutStoreRoot.recyclerviewStore.setAdapter(coinAdapter);
binding.layoutStoreRoot.recyclerviewStoreSmall.setAdapter(coinAdapter);
subVipAdapter = new ZYTStoreSubVipAdapter();
binding.layoutStoreRoot.recyclerviewStoreVip.setAdapter(subVipAdapter);
coinLargerAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
binding.loading.show();
coinLargerAdapter.setCurrentPosition(i);
ZYTPaySettingBean.Coins coins = coinLargerAdapter.getItem(i);
android_template_id = coins.getAndroid_template_id();
current_price = coins.getPrice();
current_pay_setting_id = coins.getId();
vtUserViewModel.createOrder(coins.getId(), 0, 0, 0, BillingClient.ProductType.INAPP);
});
coinAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
binding.loading.show();
ZYTPaySettingBean.Coins coins = coinAdapter.getItem(i);
@ -245,6 +265,7 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
subVipAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
binding.loading.show();
subVipAdapter.setCurrentPosition(i);
ZYTPaySettingBean.Vip vip = subVipAdapter.getItem(i);
android_template_id = vip.getAndroid_template_id();
current_price = vip.getPrice();
@ -430,7 +451,8 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
// queryAvailableCoinsProducts(vtPaySettingBean.data.getList_coins());
// queryAvailableVipProducts(vtPaySettingBean.data.getList_sub_vip());
} else {
coinAdapter.submitList(vtPaySettingBean.data.getList_coins());
coinLargerAdapter.submitList(listCoins(vtPaySettingBean.data.getList_coins(), "big"));
coinAdapter.submitList(listCoins(vtPaySettingBean.data.getList_coins(), "small"));
subVipAdapter.submitList(vtPaySettingBean.data.getList_sub_vip());
binding.loading.hide();
}
@ -518,6 +540,18 @@ public class ZYTStoreActivity extends IDDetailsRoundActivity<ActivityStoreBindin
});
}
public List<ZYTPaySettingBean.Coins> listCoins(List<ZYTPaySettingBean.Coins> it, String type) {
List<ZYTPaySettingBean.Coins> typelist = new ArrayList<>();
for (ZYTPaySettingBean.Coins coins : it) {
if (coins.getSize().equals(type)) {
typelist.add(coins);
}
}
return typelist;
}
@Override
protected void onDestroy() {
super.onDestroy();

View File

@ -5,14 +5,18 @@ import static android.text.Html.FROM_HTML_MODE_LEGACY;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.Html;
import android.view.Gravity;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -20,6 +24,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.android.billingclient.api.BillingClient;
import com.shortdrama.jelly.zyreotv.beginning.AppUtils;
import com.shortdrama.jelly.zyreotv.beginning.ZYTGooglePayUtils;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTStoreCoinsRechargeLargeAdapter;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTStoreSubVipAdapter;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.shortdrama.jelly.zyreotv.R;
@ -32,9 +37,10 @@ import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.GSTranslatesBean;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.LSQExampleCloseBean;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.ZYTPaySettingBean;
import java.util.ArrayList;
import java.util.List;
public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment {
public class ZYTEpisodesRechargeDialogFragment extends DialogFragment {
private DialogPageEpisodesRechargeZytBinding dialogRechargeBinding;
private GXCProgressLogin vtUserViewModel;
@ -46,6 +52,7 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
private Context context; // You will need a Context (e.g., Activity or Fragment context)
private ZYTStoreGoldRechargeAdapter coinAdapter;
private ZYTStoreCoinsRechargeLargeAdapter coinLargeAdapter;
private ZYTStoreSubVipAdapter subVipAdapter;
boolean isConnect = false;
@ -60,9 +67,10 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
public ZYTGooglePayUtils zytGooglePayUtils;
public ZYTEpisodesRechargeDialogFragment(){
public ZYTEpisodesRechargeDialogFragment() {
}
public ZYTEpisodesRechargeDialogFragment(Context context, ZYTGooglePayUtils zytGooglePayUtil, boolean isConnect) {
this.context = context;
this.zytGooglePayUtils = zytGooglePayUtil;
@ -83,6 +91,16 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
this.dataPasser = dataPasser;
}
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null && dialog.getWindow() != null) {
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // 如需透明背景
}
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
@ -91,7 +109,11 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
translates = AppUtils.getTranslates();
if (translates != null) {
// dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsepisode.setText(translates.getGleestream_coins());
dialogRechargeBinding.layoutStoreRecharge.tvStoreMembership.setText(translates.getGleestream_membership());
// dialogRechargeBinding.layoutStoreRecharge.tvStoreMembership.setText(translates.getGleestream_membership());
dialogRechargeBinding.tvStoreYourcoins.setText(translates.getGleestream_youcoins() + ":");
dialogRechargeBinding.tvStoreUnlock.setText(translates.getGleestream_unlock() + ":");
dialogRechargeBinding.layoutStoreRecharge.tvStoreVip.setText(translates.getVip() + " | " + translates.getGleestream_vip_subintroduce());
dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsepisode.setText(translates.getGleestream_coins_recharge());
dialogRechargeBinding.layoutStoreRecharge.layoutVipIntroduct.tvMembershipIntroduce01.setText(translates.getGleestream_vip_introduct1());
dialogRechargeBinding.layoutStoreRecharge.layoutVipIntroduct.tvMembershipIntroduce02.setText(translates.getGleestream_vip_introduct2());
dialogRechargeBinding.layoutStoreRecharge.layoutVipIntroduct.tvMembershipIntroduce03.setText(translates.getGleestream_vip_introduct3());
@ -111,7 +133,8 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
requireActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
coinAdapter.submitList(list);
coinAdapter.submitList(listCoins(list, "small"));
coinLargeAdapter.submitList(listCoins(list, "big"));
}
});
@ -137,21 +160,41 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
if (parcelable instanceof LSQExampleCloseBean.YPZTestUnselect) {
episode = (LSQExampleCloseBean.YPZTestUnselect) parcelable;
shorplayId = episode.getShort_play_id();
dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsepisode.setText((translates != null ? translates.getGleestream_coins() : getString(R.string.coins_txt)) + " " + episode.getCoins());
dialogRechargeBinding.tvStoreYourcoinsValue.setText(" "+(TIndicator.getAllCoin()));
dialogRechargeBinding.tvStoreUnlockValue.setText(" " + episode.getCoins());
//dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsepisode.setText((translates != null ? translates.getGleestream_coins() : getString(R.string.coins_txt)) + " " + episode.getCoins());
vtUserViewModel.getPaySetting(shorplayId, episode.getShort_play_video_id());
// dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsvalue.setText((translates != null ? translates.getGleestream_youcoins() : getString(R.string.store_coins_your)) + Html.fromHtml(getString(R.string.store_coins, TIndicator.getAllCoin()),
// FROM_HTML_MODE_LEGACY));
dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsvalue.setText((translates != null ? translates.getGleestream_youcoins() : getString(R.string.store_coins_your)) + ": " + (TIndicator.getAllCoin()));
// dialogRechargeBinding.layoutStoreRecharge.tvStoreCoinsvalue.setText((translates != null ? translates.getGleestream_youcoins() : getString(R.string.store_coins_your)) + ": " + (TIndicator.getAllCoin()));
}
}
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 2);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStore.setLayoutManager(layoutManager);
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 3);
GridLayoutManager layoutManagerlarge = new GridLayoutManager(getContext(), 2);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreSmall.setLayoutManager(layoutManager);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreLarge.setLayoutManager(layoutManagerlarge);
coinAdapter = new ZYTStoreGoldRechargeAdapter();
coinLargeAdapter = new ZYTStoreCoinsRechargeLargeAdapter();
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreVip.setLayoutManager(new LinearLayoutManager(getContext()));
subVipAdapter = new ZYTStoreSubVipAdapter();
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStore.setAdapter(coinAdapter);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreSmall.setAdapter(coinAdapter);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreLarge.setAdapter(coinLargeAdapter);
dialogRechargeBinding.layoutStoreRecharge.recyclerviewStoreVip.setAdapter(subVipAdapter);
coinLargeAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
if (dataPasser != null) {
coinLargeAdapter.setCurrentPosition(i);
ZYTPaySettingBean.GooglePayItem item = new ZYTPaySettingBean.GooglePayItem();
ZYTPaySettingBean.Coins coins = coinLargeAdapter.getItem(i);
if (coins != null) {
item.setAndroid_template_id(coins.getAndroid_template_id());
item.setCurrent_price(coins.getPrice());
item.setCurrent_pay_setting_id(coins.getId());
item.setPayType(BillingClient.ProductType.INAPP);
dataPasser.onDataPass(item);
}
}
});
coinAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
if (dataPasser != null) {
coinAdapter.setCurrentPosition(i);
@ -171,6 +214,7 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
if (dataPasser != null) {
ZYTPaySettingBean.GooglePayItem item = new ZYTPaySettingBean.GooglePayItem();
ZYTPaySettingBean.Vip vip = subVipAdapter.getItem(i);
subVipAdapter.setCurrentPosition(i);
if (vip != null) {
item.setAndroid_template_id(vip.getAndroid_template_id());
item.setCurrent_price(vip.getPrice());
@ -224,20 +268,29 @@ public class ZYTEpisodesRechargeDialogFragment extends BottomSheetDialogFragment
builder.setView(dialogRechargeBinding.getRoot());
Dialog dialog = builder.create();
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
// dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
android.view.Window window = dialog.getWindow();
if (window != null) {
window.getDecorView().setPadding(0, 0, 0, 0);
window.setGravity(Gravity.BOTTOM);
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(layoutParams);
}
return dialog;
}
public List<ZYTPaySettingBean.Coins> listCoins(List<ZYTPaySettingBean.Coins> it, String type) {
List<ZYTPaySettingBean.Coins> typelist = new ArrayList<>();
for (ZYTPaySettingBean.Coins coins : it) {
if (coins.getSize().equals(type)) {
typelist.add(coins);
}
}
return typelist;
}
public void hideLoading() {
dialogRechargeBinding.avi.hide();

View File

@ -25,6 +25,9 @@ import androidx.media3.common.MediaItem;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.DefaultDataSourceFactory;
import androidx.media3.exoplayer.DefaultRenderersFactory;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.hls.HlsMediaSource;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
@ -51,6 +54,7 @@ import com.shortdrama.jelly.zyreotv.topics.abslRwgt.decbn.GSMyVipActivity;
import com.shortdrama.jelly.zyreotv.topics.abslRwgt.pragma.IDDetailsRoundActivity;
import com.shortdrama.jelly.zyreotv.topics.abslRwgt.pragma.ZEpisodeEpisode;
import com.shortdrama.jelly.zyreotv.topics.amera.BVXHeadView;
import com.shortdrama.jelly.zyreotv.topics.amera.FfmpegRenderersFactory;
import com.shortdrama.jelly.zyreotv.topics.dts.WVideoplay;
import com.shortdrama.jelly.zyreotv.topics.dts.ZYTRecommondVideoAdapter;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.DBeanUnselectBean;
@ -184,7 +188,9 @@ public class ZYTVideoPlayerDetailsActivity extends IDDetailsRoundActivity<MchDim
}
});
player = new ExoPlayer.Builder(this).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(this))).build();
player = new ExoPlayer.Builder(this,new FfmpegRenderersFactory(this)).setRenderersFactory(new DefaultRenderersFactory(this).setEnableDecoderFallback(true)).build();
// player = new ExoPlayer.Builder(this).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(this))).build();
viewBinding.viewVideoRecommend.recommendPlayerView.setPlayer(player);
iv_cover_recommend_detail =
viewBinding.viewVideoRecommend.recommendPlayerView.findViewById(R.id.iv_cover_recommend_detail);
@ -639,12 +645,12 @@ public class ZYTVideoPlayerDetailsActivity extends IDDetailsRoundActivity<MchDim
@SuppressLint("UnsafeOptInUsageError")
private MediaSource buildMediaSource(String videoPath) {
// DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, "gleestream");
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, "gleestream");
if (videoPath.endsWith(".m3u8")) {
return new HlsMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(this))
return new HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
} else {
return new ProgressiveMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(this))
return new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
}
}

View File

@ -1,5 +1,6 @@
package com.shortdrama.jelly.zyreotv.topics.amera;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.Uri;
import android.os.Handler;
@ -20,8 +21,12 @@ import androidx.media3.common.MediaItem;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.DefaultRenderersFactory;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.hls.HlsMediaSource;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
import com.bumptech.glide.Glide;
import com.shortdrama.jelly.zyreotv.GPplicationLoadingdefault;
@ -40,6 +45,7 @@ import org.greenrobot.eventbus.EventBus;
import java.util.concurrent.ScheduledFuture;
//详情播放器
public class BVXHeadView extends FrameLayout {
private ExoPlayer player;
// private Job progressJob; //任务调度器
@ -76,7 +82,8 @@ public class BVXHeadView extends FrameLayout {
@OptIn(markerClass = UnstableApi.class)
public BVXHeadView(Context context, AttributeSet attrs) {
super(context, attrs);
player = new ExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
// player = new ExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
player = new ExoPlayer.Builder(context, new FfmpegRenderersFactory(context)).setRenderersFactory(new DefaultRenderersFactory(context).setEnableDecoderFallback(true)).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
LayoutInflater inflater = LayoutInflater.from(context);
View inflate = inflater.inflate(R.layout.kbv_follow_unit, this, true);
bind = KbvFollowUnitBinding.bind(inflate);
@ -319,7 +326,10 @@ public class BVXHeadView extends FrameLayout {
public LSQExampleCloseBean.YPZTestUnselect mediaItem;
@SuppressLint("UnsafeOptInUsageError")
public void setMedia(LSQExampleCloseBean.YPZTestUnselect bean, LSQExampleCloseBean.YSearchUser shortVideoInfo) {
Glide.with(getContext()).load(shortVideoInfo.getImage_url()).into(ivCoverPlayerDetail);
Glide.with(getContext()).load(shortVideoInfo.getImage_url()).into(bind.playerViewTop.ivCoverPlayerDetail);
ITItem.isCanPlay = true;
ITItem.isLock = bean.isIs_lock();
mediaItem = bean;
@ -346,8 +356,8 @@ public class BVXHeadView extends FrameLayout {
// tv_episode_playertotal.setText(String.valueOf(shortVideoInfo.getEpisode_total()));
tv_des_player.setText(shortVideoInfo.getDescription());
Glide.with(getContext()).load(shortVideoInfo.getImage_url()).into(ivCoverPlayerDetail);
// ivCoverPlayerDetail.setVisibility(View.VISIBLE);
ivCoverPlayerDetail.setVisibility(View.VISIBLE);
iv_collection_controller.setImageResource(shortVideoInfo.isIs_collect() ? R.mipmap.banner_ffffff : R.mipmap.launcher_preference);
bind.playerViewTop.ivCollectionController.setImageResource(shortVideoInfo.isIs_collect() ? R.mipmap.banner_ffffff : R.mipmap.launcher_preference);
tv_collection_num_controller.setText(TimeUtils.formatNumber(shortVideoInfo.getCollect_total()));
@ -362,7 +372,8 @@ public class BVXHeadView extends FrameLayout {
});
if (!bean.isIs_lock()) {
bind.playerViewTop.getRoot().setVisibility(GONE);
player.setMediaItem(MediaItem.fromUri(Uri.parse(bean.getVideo_url())));
// player.setMediaItem(MediaItem.fromUri(Uri.parse(bean.getVideo_url())));
player.setMediaSource(buildMediaSource(bean.getVideo_url()));
player.prepare();
if (mediaItem.getPlay_seconds() != 0) {
player.seekTo(mediaItem.getPlay_seconds());
@ -378,6 +389,17 @@ public class BVXHeadView extends FrameLayout {
}
@SuppressLint("UnsafeOptInUsageError")
private MediaSource buildMediaSource(String videoPath) {
if (videoPath.endsWith(".m3u8")) {
return new HlsMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(getContext()))
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
} else {
return new ProgressiveMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(getContext()))
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
}
}
public void stop() {
LogUtils.d("player stop");
player.stop();

View File

@ -0,0 +1,49 @@
package com.shortdrama.jelly.zyreotv.topics.amera;
import static androidx.media3.exoplayer.DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import androidx.media3.decoder.ffmpeg.FfmpegAudioRenderer;
import androidx.media3.exoplayer.DefaultRenderersFactory;
import androidx.media3.exoplayer.Renderer;
import androidx.media3.exoplayer.audio.AudioRendererEventListener;
import androidx.media3.exoplayer.audio.AudioSink;
import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
import java.util.ArrayList;
@SuppressLint("UnsafeOptInUsageError")
public class FfmpegRenderersFactory extends DefaultRenderersFactory {
public FfmpegRenderersFactory(Context context) {
super(context);
setExtensionRendererMode(EXTENSION_RENDERER_MODE_ON);
}
@Override
public void buildAudioRenderers(
Context context,
int extensionRendererMode,
MediaCodecSelector mediaCodecSelector,
boolean enableDecoderFallback,
AudioSink audioSink,
Handler eventHandler,
AudioRendererEventListener eventListener,
ArrayList<Renderer> out) {
out.add(new FfmpegAudioRenderer());
super.buildAudioRenderers(
context,
extensionRendererMode,
mediaCodecSelector,
enableDecoderFallback,
audioSink,
eventHandler,
eventListener,
out
);
}
}

View File

@ -10,6 +10,7 @@ import java.util.Random;
import java.util.HashMap;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.Uri;
import android.util.AttributeSet;
@ -30,8 +31,14 @@ import androidx.media3.common.MediaItem;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.DefaultDataSourceFactory;
import androidx.media3.exoplayer.DefaultRenderersFactory;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.hls.HlsMediaSource;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
import com.bumptech.glide.Glide;
import com.shortdrama.jelly.zyreotv.R;
@ -52,7 +59,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
//推荐播放器
public class XCcountView extends FrameLayout {
private volatile boolean has_UtilsLayout = false;
private volatile ArrayList<Double> rulesKeyVideohistoryArray;
@ -86,7 +93,11 @@ public class XCcountView extends FrameLayout {
@OptIn(markerClass = UnstableApi.class)
public XCcountView(Context context, AttributeSet attrs) {
super(context, attrs);
player = new ExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
player = new ExoPlayer.Builder(context, new FfmpegRenderersFactory(context))
.setRenderersFactory(new DefaultRenderersFactory(context).setEnableDecoderFallback(true))
.setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
// player = new ExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(GSExplayCacheUtils.getCacheFactory(context))).build();
LayoutInflater inflater = LayoutInflater.from(context);
View inflate = inflater.inflate(R.layout.kd_ecyrpt_rewards, this, true);
KdEcyrptRewardsBinding bind = KdEcyrptRewardsBinding.bind(inflate);
@ -892,6 +903,7 @@ public class XCcountView extends FrameLayout {
}
@SuppressLint("UnsafeOptInUsageError")
public void setMedia(DBeanUnselectBean bean) {
ITItem.isLock = false;
@ -1027,7 +1039,8 @@ public class XCcountView extends FrameLayout {
}
});
player.setMediaItem(MediaItem.fromUri(Uri.parse(bean.getVideo_info().getVideo_url())));
// player.setMediaItem(MediaItem.fromUri(Uri.parse(bean.getVideo_info().getVideo_url())));
player.setMediaSource(buildMediaSource(bean.getVideo_info().getVideo_url()));
boolean continue_ii4 = false;
player.prepare();
float common1 = 1086.0f;
@ -1036,6 +1049,17 @@ public class XCcountView extends FrameLayout {
}
}
@SuppressLint("UnsafeOptInUsageError")
private MediaSource buildMediaSource(String videoPath) {
if (videoPath.endsWith(".m3u8")) {
return new HlsMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(getContext()))
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
} else {
return new ProgressiveMediaSource.Factory(GSExplayCacheUtils.getCacheFactory(getContext()))
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)));
}
}
public void stop() {
player.stop();
HashMap<String, Double> utils8 = new HashMap<String, Double>();

View File

@ -0,0 +1,76 @@
package com.shortdrama.jelly.zyreotv.topics.dts;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.chad.library.adapter4.BaseQuickAdapter;
import com.chad.library.adapter4.viewholder.QuickViewHolder;
import com.shortdrama.jelly.zyreotv.R;
import com.shortdrama.jelly.zyreotv.beginning.AppUtils;
import com.shortdrama.jelly.zyreotv.beginning.TimeUtils;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.GSTranslatesBean;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.ZYTPaySettingBean;
public class ZYTStoreCoinsRechargeLargeAdapter extends BaseQuickAdapter<ZYTPaySettingBean.Coins, QuickViewHolder> {
private int currentPosition = -1;
public void setCurrentPosition(int currentPosition) {
this.currentPosition = currentPosition;
notifyDataSetChanged();
}
@Override
protected void onBindViewHolder(QuickViewHolder holder, int position, ZYTPaySettingBean.Coins item) {
GSTranslatesBean.Translates translates = AppUtils.getTranslates();
ConstraintLayout root = holder.getView(R.id.layout_store_root_item);
AppCompatTextView tvCoins = holder.getView(R.id.tv_store_coins_item);
// AppCompatTextView tvLimited = holder.getView(R.id.tv_store_coins_limited_item);
AppCompatTextView tvPercent = holder.getView(R.id.tv_store_coins_item_percent);
AppCompatTextView tvCoinsSend = holder.getView(R.id.tv_store_coins_add_item);
AppCompatTextView tvCoinPrice = holder.getView(R.id.tv_store_coins_price_item);
AppCompatImageView tvCornerMarker = holder.getView(R.id.iv_store_coins_hot);
// tvLimited.setVisibility(GONE);
// if (position == 0) {
// tvLimited.setVisibility(VISIBLE);
// }
if (item.getCorner_marker().isEmpty()) {
tvCornerMarker.setVisibility(GONE);
} else {
tvCornerMarker.setVisibility(VISIBLE);
}
if (item.getSend_coins() <= 0) {
tvPercent.setVisibility(View.INVISIBLE);
} else {
tvPercent.setVisibility(VISIBLE);
tvPercent.setText(TimeUtils.precess(item.getSend_coins(), item.getCoins()) + "%");
}
root.setBackgroundResource(R.drawable.bg_store_coins_large_unselected_boder);
if (position == currentPosition) {
root.setBackgroundResource(R.drawable.bg_store_coins_large_selected_boder);
}
tvCoins.setText(String.valueOf(item.getCoins()));
tvCoinsSend.setText(item.getSend_coins() == 0 ? "" : "+" + item.getSend_coins());
tvCoinPrice.setText(item.getCurrency() + item.getPrice());
}
@Override
public QuickViewHolder onCreateViewHolder(Context context, ViewGroup parent, int viewType) {
return new QuickViewHolder(R.layout.item_store_coinslist_larget_zyt, parent);
}
}

View File

@ -10,7 +10,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.chad.library.adapter4.BaseQuickAdapter;
import com.chad.library.adapter4.viewholder.QuickViewHolder;
import com.shortdrama.jelly.zyreotv.R;
import com.shortdrama.jelly.zyreotv.beginning.AppUtils;
import com.shortdrama.jelly.zyreotv.beginning.TimeUtils;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.GSTranslatesBean;
import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.ZYTPaySettingBean;
@ -27,6 +29,7 @@ public class ZYTStoreGoldRechargeAdapter extends BaseQuickAdapter<ZYTPaySettingB
@Override
protected void onBindViewHolder(QuickViewHolder holder, int position, ZYTPaySettingBean.Coins item) {
GSTranslatesBean.Translates translates = AppUtils.getTranslates();
ConstraintLayout root = holder.getView(R.id.layout_store_root_item);
AppCompatTextView tvCoins = holder.getView(R.id.tv_store_coins_item);
AppCompatTextView tvLimited = holder.getView(R.id.tv_store_coins_limited_item);
@ -38,17 +41,18 @@ public class ZYTStoreGoldRechargeAdapter extends BaseQuickAdapter<ZYTPaySettingB
// tvLimited.setVisibility(VISIBLE);
// }
if (item.getSend_coins() <= 0) {
tvPercent.setVisibility(View.GONE);
tvPercent.setVisibility(View.INVISIBLE);
} else {
tvPercent.setVisibility(View.VISIBLE);
tvPercent.setText(TimeUtils.precess(item.getSend_coins(), item.getCoins()) + "%");
}
root.setBackgroundResource(R.drawable.cornor_ffffff_gradient_10dp);
if (position == currentPosition) {
root.setBackgroundResource(R.drawable.cornor_f564b6_gradient_10dp);
}
// root.setBackgroundResource(R.drawable.cornor_ffffff_gradient_10dp);
// if (position == currentPosition) {
// root.setBackgroundResource(R.drawable.cornor_f564b6_gradient_10dp);
// }
tvCoins.setText(String.valueOf(item.getCoins()));
// tvCoinsSend.setText(item.getSend_coins() == 0 ? "" : "+" + item.getSend_coins() + ((translates != null) ? " "+translates.getGleestream_donate() : " Donate"));
tvCoinsSend.setText(item.getSend_coins() == 0 ? "" : "+" + item.getSend_coins());
tvCoinPrice.setText(item.getCurrency() + item.getPrice());

View File

@ -1,9 +1,21 @@
package com.shortdrama.jelly.zyreotv.topics.dts;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Context;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RadialGradient;
import android.graphics.Shader;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.constraintlayout.widget.ConstraintLayout;
@ -18,11 +30,12 @@ import com.shortdrama.jelly.zyreotv.unconfirmedPiecewise.ZYTPaySettingBean;
public class ZYTStoreSubVipAdapter extends BaseQuickAdapter<ZYTPaySettingBean.Vip, QuickViewHolder> {
private int currentPosition = 0;
private int currentPosition = -1;
public void setCurrentPosition(int currentPosition) {
this.currentPosition = currentPosition;
notifyDataSetChanged();
}
@Override
@ -37,39 +50,197 @@ public class ZYTStoreSubVipAdapter extends BaseQuickAdapter<ZYTPaySettingBean.Vi
AppCompatTextView tvDesc = holder.getView(R.id.tv_membership_desc);
AppCompatTextView tvDonateCoins = holder.getView(R.id.tv_membership_donatecoins);
AppCompatTextView tvIntroduce = holder.getView(R.id.tv_membership_introduce);
if (position == 0) {
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_one);
tvTitle.setTextColor(Color.parseColor("#68003B"));
tvCurrency.setTextColor(Color.parseColor("#68003B"));
tvPrice.setTextColor(Color.parseColor("#68003B"));
tvVipType.setTextColor(Color.parseColor("#68003B"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_one_14dp);
}
if (position == 1) {
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_two);
tvTitle.setTextColor(Color.parseColor("#71412B"));
tvCurrency.setTextColor(Color.parseColor("#71412B"));
tvPrice.setTextColor(Color.parseColor("#71412B"));
tvVipType.setTextColor(Color.parseColor("#71412B"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_two_14dp);
}
if (position == 2) {
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_three);
tvTitle.setTextColor(Color.parseColor("#221C80"));
tvCurrency.setTextColor(Color.parseColor("#221C80"));
tvPrice.setTextColor(Color.parseColor("#221C80"));
tvVipType.setTextColor(Color.parseColor("#221C80"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_three_14dp);
}
if (position == 3) {
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_four);
tvTitle.setTextColor(Color.parseColor("#00438D"));
tvCurrency.setTextColor(Color.parseColor("#00438D"));
tvPrice.setTextColor(Color.parseColor("#00438D"));
tvVipType.setTextColor(Color.parseColor("#00438D"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_four_14dp);
}
AppCompatImageView ivselected = holder.getView(R.id.iv_selected);
String viptype = item.getVip_type_key();
if (viptype.equals("year")) {
tvTitle.setTextColor(Color.parseColor("#FFE2AD1C"));
tvCurrency.setTextColor(Color.parseColor("#FFE2AD1C"));
tvPrice.setTextColor(Color.parseColor("#FFE2AD1C"));
tvVipType.setTextColor(Color.parseColor("#FFE2AD1C"));
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_year);
tvTitle.post(new Runnable() {
@Override
public void run() {
applyGradient(tvTitle, "#E2AD1C", "#C95D28");
}
});
tvCurrency.post(new Runnable() {
@Override
public void run() {
applyGradient(tvCurrency, "#E2AD1C", "#C95D28");
}
});
tvPrice.post(new Runnable() {
@Override
public void run() {
applyGradient(tvPrice, "#E2AD1C", "#C95D28");
}
});
tvVipType.post(new Runnable() {
@Override
public void run() {
applyGradient(tvVipType, "#E2AD1C", "#C95D28");
}
});
tvIntroduce.setTextColor(Color.parseColor("#D2815E"));
tvDesc.setTextColor(Color.parseColor("#FF914C21"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_year_16dp);
}
if (viptype.equals("quarter")) {
tvTitle.setTextColor(Color.parseColor("#FF675FD8"));
tvCurrency.setTextColor(Color.parseColor("#FF675FD8"));
tvPrice.setTextColor(Color.parseColor("#FF675FD8"));
tvVipType.setTextColor(Color.parseColor("#FF675FD8"));
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_quarter);
tvTitle.post(new Runnable() {
@Override
public void run() {
applyGradient(tvTitle, "#675FD8", "#3A32B2");
}
});
tvCurrency.post(new Runnable() {
@Override
public void run() {
applyGradient(tvCurrency, "#675FD8", "#3A32B2");
}
});
tvPrice.post(new Runnable() {
@Override
public void run() {
applyGradient(tvPrice, "#675FD8", "#3A32B2");
}
});
tvVipType.post(new Runnable() {
@Override
public void run() {
applyGradient(tvVipType, "#675FD8", "#3A32B2");
}
});
tvIntroduce.setTextColor(Color.parseColor("#8E8AC8"));
tvDesc.setTextColor(Color.parseColor("#FF6650A1"));
// tvTitle.setTextColor(Color.parseColor("#221C80"));
// tvCurrency.setTextColor(Color.parseColor("#221C80"));
// tvPrice.setTextColor(Color.parseColor("#221C80"));
// tvVipType.setTextColor(Color.parseColor("#221C80"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_quarter_16dp);
}
if (viptype.equals("week")) {
tvTitle.setTextColor(Color.parseColor("#FF88A2D2"));
tvCurrency.setTextColor(Color.parseColor("#FF88A2D2"));
tvPrice.setTextColor(Color.parseColor("#FF88A2D2"));
tvVipType.setTextColor(Color.parseColor("#FF88A2D2"));
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_week);
tvTitle.post(new Runnable() {
@Override
public void run() {
applyGradient(tvTitle, "#88A2D2", "#878BC5");
}
});
tvCurrency.post(new Runnable() {
@Override
public void run() {
applyGradient(tvCurrency, "#88A2D2", "#878BC5");
}
});
tvPrice.post(new Runnable() {
@Override
public void run() {
applyGradient(tvPrice, "#88A2D2", "#878BC5");
}
});
tvVipType.post(new Runnable() {
@Override
public void run() {
applyGradient(tvVipType, "#88A2D2", "#878BC5");
}
});
tvIntroduce.setTextColor(Color.parseColor("#8FA5B5"));
tvDesc.setTextColor(Color.parseColor("#FF616C99"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_week_16dp);
}
if (viptype.equals("month")) {
tvTitle.setTextColor(Color.parseColor("#FF82CBF8"));
tvCurrency.setTextColor(Color.parseColor("#FF82CBF8"));
tvPrice.setTextColor(Color.parseColor("#FF82CBF8"));
tvVipType.setTextColor(Color.parseColor("#FF82CBF8"));
constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_month);
tvTitle.post(new Runnable() {
@Override
public void run() {
applyGradient(tvTitle, "#82CBF8", "#6D9CE8");
}
});
tvCurrency.post(new Runnable() {
@Override
public void run() {
applyGradient(tvCurrency, "#82CBF8", "#6D9CE8");
}
});
tvPrice.post(new Runnable() {
@Override
public void run() {
applyGradient(tvPrice, "#82CBF8", "#6D9CE8");
}
});
tvVipType.post(new Runnable() {
@Override
public void run() {
applyGradient(tvVipType, "#82CBF8", "#6D9CE8");
}
});
tvIntroduce.setTextColor(Color.parseColor("#90AACF"));
tvDesc.setTextColor(Color.parseColor("#FF4276B8"));
tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_month_16dp);
}
// if (position == 0) {
// constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_month);
// tvTitle.setTextColor(Color.parseColor("#68003B"));
// tvCurrency.setTextColor(Color.parseColor("#68003B"));
// tvPrice.setTextColor(Color.parseColor("#68003B"));
// tvVipType.setTextColor(Color.parseColor("#68003B"));
// tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_one_14dp);
// }
// if (position == 1) {
// constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_week);
// tvTitle.setTextColor(Color.parseColor("#71412B"));
// tvCurrency.setTextColor(Color.parseColor("#71412B"));
// tvPrice.setTextColor(Color.parseColor("#71412B"));
// tvVipType.setTextColor(Color.parseColor("#71412B"));
// tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_two_14dp);
// }
// if (position == 2) {
// constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_quarter);
// tvTitle.setTextColor(Color.parseColor("#221C80"));
// tvCurrency.setTextColor(Color.parseColor("#221C80"));
// tvPrice.setTextColor(Color.parseColor("#221C80"));
// tvVipType.setTextColor(Color.parseColor("#221C80"));
// tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_three_14dp);
// }
// if (position == 3) {
// constraintLayout.setBackgroundResource(R.mipmap.ic_vippurchase_bg_year);
// tvTitle.setTextColor(Color.parseColor("#00438D"));
// tvCurrency.setTextColor(Color.parseColor("#00438D"));
// tvPrice.setTextColor(Color.parseColor("#00438D"));
// tvVipType.setTextColor(Color.parseColor("#00438D"));
// tvDesc.setBackgroundResource(R.drawable.cornor_vippurchase_four_14dp);
// }
if (currentPosition == position) {
ivselected.setVisibility(VISIBLE);
} else {
ivselected.setVisibility(GONE);
}
tvTitle.setText(item.getBrief() + "");
tvCurrency.setText(item.getCurrency() + "");
tvPrice.setText(item.getPrice() + "");
@ -77,10 +248,15 @@ public class ZYTStoreSubVipAdapter extends BaseQuickAdapter<ZYTPaySettingBean.Vi
tvDesc.setText(item.getDescription() + "");
tvDonateCoins.setText("+Extra " + item.getSend_coins());
GSTranslatesBean.Translates translates = AppUtils.getTranslates();
String introduce = getContext().getString(R.string.vip_donate_coins);
if (translates != null) {
tvIntroduce.setText(translates.getGleestream_vip_subintroduce());
introduce = translates.getGleestream_vip_donate_coins();
tvDonateCoins.setText("+" + translates.getGleestream_extra() + item.getSend_coins());
}
if (item.getSend_coins() > 0 && !introduce.isEmpty()) {
tvIntroduce.setText(AppUtils.replace(introduce, item.getSend_coin_ttl() + ""));
}
}
@ -90,4 +266,33 @@ public class ZYTStoreSubVipAdapter extends BaseQuickAdapter<ZYTPaySettingBean.Vi
}
private void applyGradient(AppCompatTextView textView, String startColor, String endColor) {
int width = textView.getWidth();
int height = textView.getHeight();
if (width == 0) width = textView.getMeasuredWidth(); // 防止为 0
TextPaint textPaint = textView.getPaint();
// 设置线性渐变
Shader shader = new LinearGradient(
0, 0, width, textView.getHeight(), // 斜向渐变 水平渐变 高度为0
new int[]{Color.parseColor(startColor), Color.parseColor(endColor)},
null,
Shader.TileMode.CLAMP
);
textPaint.setShader(shader);
textPaint.setStyle(Paint.Style.FILL);
textView.invalidate(); // 刷新视图
// Shader shader = new RadialGradient(
// width/2f,
// height/2f,
// Math.max(width, height) / 2f,
// new int[]{Color.parseColor(startColor), Color.parseColor(endColor)},
// new float[]{0f, 1f},
// Shader.TileMode.CLAMP);
// textPaint.setShader(shader);
// textPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
// // textPaint.setStyle(Paint.Style.FILL);
// textView.invalidate(); // 刷新视图
}
}

View File

@ -152,6 +152,44 @@ public class GSTranslatesBean {
private String gleestream_account_alreadyloged;
private String gleestream_vip_donate_coins;
private String gleestream_coins_recharge;
private String gleestream_unlock;
public String getGleestream_unlock() {
return gleestream_unlock;
}
public void setGleestream_unlock(String gleestream_unlock) {
this.gleestream_unlock = gleestream_unlock;
}
public String getGleestream_coins_recharge() {
return gleestream_coins_recharge;
}
public void setGleestream_coins_recharge(String gleestream_coins_recharge) {
this.gleestream_coins_recharge = gleestream_coins_recharge;
}
private String vip;
public String getVip() {
return vip;
}
public void setVip(String vip) {
this.vip = vip;
}
public String getGleestream_vip_donate_coins() {
return gleestream_vip_donate_coins;
}
public void setGleestream_vip_donate_coins(String gleestream_vip_donate_coins) {
this.gleestream_vip_donate_coins = gleestream_vip_donate_coins;
}
public String getGleestream_account_alreadyloged() {
return gleestream_account_alreadyloged;
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke
android:width="@dimen/affffffSettings"
android:color="#40FFFFFF" />
<solid android:color="#443D4C" />
<corners android:radius="@dimen/googleShare" />
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke
android:width="@dimen/affffffSettings"
android:color="#FFC99A" />
<solid android:color="#84604E" />
<corners android:radius="@dimen/googleShare" />
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke
android:width="@dimen/affffffSettings"
android:color="#40FFFFFF" />
<solid android:color="#84604E" />
<corners android:radius="@dimen/googleShare" />
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#F564B6"
android:startColor="#BF6BFF"
android:type="linear"
android:useLevel="true" />
<corners android:bottomRightRadius="@dimen/googleShare"
android:bottomLeftRadius="@dimen/googleShare"/>
</shape>
</item>
</ripple>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#FFD792"
android:startColor="#FFB06B"
android:type="linear"
android:useLevel="true" />
<corners android:bottomRightRadius="@dimen/googleShare"
android:bottomLeftRadius="@dimen/googleShare"/>
</shape>
</item>
</ripple>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="180"
android:endColor="#80F564B6"
android:startColor="#80BF6BFF"
android:type="linear"
android:useLevel="true" />
<corners android:radius="19dp" />
</shape>
</item>
</layer-list>

View File

@ -5,8 +5,8 @@
<item>
<shape android:shape="rectangle">
<solid android:color="#e60F1013" />
<corners android:topLeftRadius="@dimen/aboutAbout" android:topRightRadius="@dimen/aboutAbout" />
<solid android:color="#CC0F1013" />
<corners android:topLeftRadius="24dp" android:topRightRadius="24dp" />
</shape>
</item>
</ripple>

View File

@ -6,8 +6,8 @@
<shape android:shape="rectangle">
<solid android:color="#F564B6" />
<corners android:topRightRadius="@dimen/agreementLock"
android:bottomLeftRadius="@dimen/agreementLock"/>
<corners android:topRightRadius="@dimen/googleShare"
android:bottomLeftRadius="@dimen/googleShare"/>
</shape>
</item>
</ripple>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<solid android:color="#F78B49" />
<corners android:topRightRadius="@dimen/googleShare"
android:bottomLeftRadius="@dimen/googleShare"/>
</shape>
</item>
</ripple>

View File

@ -5,13 +5,13 @@
<item>
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#FFB69A"
android:startColor="#FFC270"
android:angle="180"
android:endColor="#97CAF6"
android:startColor="#0097CAF6"
android:type="linear"
android:useLevel="true" />
<corners android:radius="@dimen/detailsClickTatus" />
<corners android:radius="@dimen/private_gqTabindicator" />
</shape>
</item>
</ripple>

View File

@ -5,13 +5,13 @@
<item>
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#94BCFF"
android:startColor="#6BD1FF"
android:angle="180"
android:endColor="#ADA8FF"
android:startColor="#00A5B3FF"
android:type="linear"
android:useLevel="true" />
<corners android:radius="@dimen/detailsClickTatus" />
<corners android:radius="@dimen/private_gqTabindicator" />
</shape>
</item>
</ripple>

View File

@ -5,13 +5,13 @@
<item>
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#FFA7D9"
android:startColor="#FF719D"
android:angle="180"
android:endColor="#AAC1E6"
android:startColor="#00AAC1E6"
android:type="linear"
android:useLevel="true" />
<corners android:radius="@dimen/detailsClickTatus" />
<corners android:radius="@dimen/private_gqTabindicator" />
</shape>
</item>
</ripple>

View File

@ -5,13 +5,13 @@
<item>
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#ADA7FF"
android:startColor="#A5B3FF"
android:angle="180"
android:endColor="#FFB179"
android:startColor="#00FFB179"
android:type="linear"
android:useLevel="true" />
<corners android:radius="@dimen/detailsClickTatus" />
<corners android:radius="@dimen/private_gqTabindicator" />
</shape>
</item>
</ripple>

View File

@ -6,25 +6,88 @@
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="44dp"
android:background="@drawable/cornor_0f1013_12dp"
android:orientation="vertical"
android:paddingBottom="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close_episodes_recharge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:padding="@dimen/followHistoryOllow"
app:srcCompat="@mipmap/ic_close" />
android:paddingStart="15dp"
android:paddingTop="15dp"
android:paddingEnd="15dp"
android:paddingBottom="8dp"
app:srcCompat="@mipmap/ic_rechargedialog_close" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_yourcoins"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_alignTop="@+id/layout_unlock"
android:layout_alignBottom="@+id/layout_unlock"
android:text="@string/store_coins_your"
android:textColor="#99FFFFFF"
android:textSize="@dimen/fragmentTabindicator" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_yourcoins_value"
android:layout_alignTop="@+id/layout_unlock"
android:layout_alignBottom="@+id/layout_unlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_toEndOf="@+id/tv_store_yourcoins"
android:textColor="#F564B6"
android:textSize="@dimen/fragmentTabindicator" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/layout_unlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginStart="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:background="@drawable/bg_unlock_coins"
android:layout_toEndOf="@+id/tv_store_yourcoins_value"
android:gravity="center">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_unlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_unlock"
android:textColor="#FFFFFF"
android:textSize="@dimen/fragmentTabindicator" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_unlock_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="2dp"
android:drawableEnd="@mipmap/ic_unlock_gold"
android:textColor="#E5F564B6"
android:textSize="@dimen/fragmentTabindicator" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="@dimen/registeredEaderUnit"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_below="@+id/iv_close_episodes_recharge">

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_store_root_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/agreementLock"
android:layout_marginEnd="@dimen/agreementLock"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_store_coins_hot"
android:layout_width="@dimen/clickOdyload"
android:layout_height="@dimen/clickOdyload"
android:paddingStart="5dp"
android:paddingTop="4dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_coins_hot" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_item_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/cornor_f78b49_left_right_8dp"
android:paddingStart="5dp"
android:paddingTop="3dp"
android:paddingEnd="5dp"
android:paddingBottom="3dp"
android:textColor="@android:color/white"
android:textSize="12sp"
android:visibility="invisible"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/aboutAbout"
android:drawableEnd="@mipmap/ic_mywallet_coins"
android:drawablePadding="@dimen/unitEventUnique"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="@dimen/eaderPplicationHistory"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item_percent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_add_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFE4BE"
android:textSize="@dimen/gradleAgreement"
app:layout_constraintBottom_toTopOf="@+id/tv_store_coins_price_item"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_price_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/newsPolicyExplore"
android:background="@drawable/bg_store_coins_price_larger"
android:gravity="center"
android:paddingTop="6dp"
android:paddingBottom="9dp"
android:textColor="#BC6400"
android:textSize="@dimen/ragmentSettings"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/tv_store_coins_item"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_limited_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/cornor_f564b6_left_right_8dp"
android:paddingStart="@dimen/googleShare"
android:paddingEnd="@dimen/squareDefault_q"
android:text="@string/recharge_limit_txt"
android:textColor="@android:color/white"
android:textSize="@dimen/stringsRechargeSeekbar"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_price_item" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -6,66 +6,73 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/agreementLock"
android:layout_marginEnd="@dimen/agreementLock"
android:background="@drawable/bg_store_coins_boder"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
app:layout_constraintRight_toRightOf="parent"
android:id="@+id/tv_store_coins_item_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:background="@drawable/cornor_f564b6_left_right_10dp"
android:paddingStart="6dp"
android:paddingTop="2dp"
android:paddingEnd="6dp"
android:paddingBottom="2dp"
android:visibility="gone"
android:id="@+id/tv_store_coins_item_percent"
android:background="@drawable/cornor_f564b6_left_right_8dp"
android:paddingStart="5dp"
android:paddingTop="3dp"
android:paddingEnd="5dp"
android:paddingBottom="3dp"
android:textColor="@android:color/white"
android:textSize="11sp" />
android:textSize="10sp"
android:visibility="invisible"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/detailsClickTatus"
android:layout_marginTop="@dimen/followHistoryOllow"
android:drawableStart="@mipmap/ic_mywallet_coins"
android:drawablePadding="@dimen/cateSplash"
android:layout_marginTop="@dimen/aboutAbout"
android:drawableEnd="@mipmap/ic_mywallet_coins"
android:drawablePadding="@dimen/unitEventUnique"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="@dimen/pisodesPisodesNine"
android:textSize="@dimen/appnameOmmonClose"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item_percent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_add_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#8a899f"
android:textColor="#F56490"
android:textSize="@dimen/gradleAgreement"
app:layout_constraintBottom_toBottomOf="@+id/tv_store_coins_item"
app:layout_constraintStart_toEndOf="@+id/tv_store_coins_item"
app:layout_constraintTop_toTopOf="@+id/tv_store_coins_item" />
app:layout_constraintBottom_toTopOf="@+id/tv_store_coins_price_item"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_price_item"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/detailsClickTatus"
android:layout_marginBottom="@dimen/agreementLock"
android:layout_marginTop="@dimen/newsPolicyExplore"
android:background="@drawable/bg_store_coins_price"
android:gravity="center"
android:paddingTop="6dp"
android:paddingBottom="9dp"
android:textColor="@android:color/white"
android:textSize="@dimen/fragmentTabindicator"
android:textSize="@dimen/gradleAgreement"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/tv_store_coins_item"
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_item" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coins_limited_item"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/cornor_f564b6_left_right_10dp"
android:background="@drawable/cornor_f564b6_left_right_8dp"
android:paddingStart="@dimen/googleShare"
android:paddingEnd="@dimen/squareDefault_q"
android:text="@string/recharge_limit_txt"
@ -73,5 +80,5 @@
android:textSize="@dimen/stringsRechargeSeekbar"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/tv_store_coins_price_item" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,15 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/item_membership_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_membership_root"
android:layout_marginTop="@dimen/agreementLock"
android:layout_marginStart="15dp"
android:layout_marginTop="@dimen/agreementLock"
android:layout_marginEnd="15dp"
android:background="@mipmap/ic_vippurchase_bg_one"
android:paddingStart="@dimen/followHistoryOllow"
android:paddingBottom="@dimen/backupHistory">
android:background="@mipmap/ic_vippurchase_bg_month"
android:paddingStart="@dimen/followHistoryOllow">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_selected"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@mipmap/ic_vip_selector" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_membership_donatecoins"
@ -17,10 +25,10 @@
android:layout_height="wrap_content"
android:background="@mipmap/ic_vipdonata_bg"
android:drawableEnd="@mipmap/ic_mywallet_coins"
android:paddingStart="@dimen/playActivity"
android:paddingTop="@dimen/cateSplash"
android:gravity="center_vertical"
android:drawablePadding="@dimen/cateSplash"
android:gravity="center_vertical|end"
android:paddingStart="@dimen/clickOdyload"
android:paddingTop="@dimen/cateSplash"
android:paddingEnd="@dimen/squareDefault_q"
android:paddingBottom="@dimen/earchLayout"
android:textColor="#8F5600"
@ -34,9 +42,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/agreementLock"
android:text="@string/vip_weekly_membership_txt"
android:textStyle="bold"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/gradleAgreement"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -44,19 +51,18 @@
android:id="@+id/tv_membership_pricetype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/ollowPisodesPlash"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/gradleAgreement"
android:textSize="@dimen/time_i5PplicationAgreement"
app:layout_constraintBottom_toBottomOf="@+id/tv_membership_price"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_membership_price" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_membership_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/vip_weekly_price_week_txt"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/commonAdapterAppname"
android:textSize="@dimen/backgroundCircleGoogle"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/tv_membership_pricetype"
app:layout_constraintTop_toBottomOf="@+id/tv_membership_title" />
@ -65,18 +71,17 @@
android:id="@+id/tv_membership_viptype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/ollowPisodesPlash"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/gradleAgreement"
android:textSize="@dimen/appnameOmmonClose"
app:layout_constraintBottom_toBottomOf="@+id/tv_membership_price"
app:layout_constraintStart_toEndOf="@+id/tv_membership_price" />
app:layout_constraintStart_toEndOf="@+id/tv_membership_price"
app:layout_constraintTop_toTopOf="@+id/tv_membership_price" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_membership_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/squareDefault_q"
android:layout_marginTop="@dimen/unitEventUnique"
android:layout_marginBottom="@dimen/ollowPisodesPlash"
android:background="@drawable/cornor_24ffffff_14dp"
android:paddingStart="@dimen/squareDefault_q"
@ -84,20 +89,19 @@
android:paddingEnd="@dimen/squareDefault_q"
android:paddingBottom="@dimen/unitEventUnique"
android:text="@string/vip_noads_txt"
android:textColor="@android:color/white"
android:textSize="@dimen/rewardsTranslatesGradient"
android:textSize="@dimen/stringsRechargeSeekbar"
app:layout_constraintStart_toStartOf="@+id/tv_membership_title"
app:layout_constraintTop_toBottomOf="@+id/tv_membership_pricetype" />
app:layout_constraintTop_toBottomOf="@+id/tv_membership_price" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_membership_introduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/squareDefault_q"
android:layout_marginBottom="@dimen/ollowPisodesPlash"
android:layout_marginBottom="@dimen/agreementLock"
android:text="@string/vip_introduce"
android:textColor="#8A899F"
android:textSize="@dimen/rewardsTranslatesGradient"
app:layout_constraintBottom_toBottomOf="parent"
android:textSize="@dimen/stringsRechargeSeekbar"
app:layout_constraintStart_toStartOf="@+id/tv_membership_title"
app:layout_constraintTop_toBottomOf="@+id/tv_membership_desc" />

View File

@ -13,58 +13,68 @@
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coinsepisode"
android:id="@+id/tv_store_vip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/followHistoryOllow"
android:text="@string/coins_txt"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/appnameOmmonClose" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coinsvalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/followHistoryOllow"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/appnameOmmonClose" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_store"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_store_coinsvalue"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginTop="@dimen/earchLayout"
android:layout_marginEnd="@dimen/earchLayout" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_membership"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/recyclerview_store"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginTop="@dimen/settingsHeaderGoogle"
android:layout_marginEnd="@dimen/followHistoryOllow"
android:text="@string/store_membership"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/appnameOmmonClose" />
android:text="VIP | Auto renew, cancel anytime "
android:textColor="@android:color/white"
android:textSize="@dimen/fragmentTabindicator"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_store_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_store_membership"
android:layout_marginTop="@dimen/rechargeGradient" />
android:layout_below="@+id/tv_store_vip"
android:layout_marginTop="@dimen/agreementLock" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coinsepisode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/recyclerview_store_vip"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginTop="@dimen/clickOdyload"
android:text="@string/coins_recharge_txt"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/fragmentTabindicator" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_store_coinsvalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv_store_coinsepisode"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/followHistoryOllow"
android:textColor="@color/color_e6ffffff"
android:textSize="@dimen/fragmentTabindicator" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_store_large"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_store_coinsvalue"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginTop="@dimen/earchLayout"
android:layout_marginEnd="@dimen/cateSplash" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_store_small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/recyclerview_store_large"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginTop="@dimen/earchLayout"
android:layout_marginEnd="@dimen/cateSplash" />
<include
android:id="@+id/layout_vip_introduct"
layout="@layout/layout_purchase_introduce_gs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/recyclerview_store_vip"
android:layout_below="@+id/recyclerview_store_small"
android:layout_marginStart="@dimen/followHistoryOllow"
android:layout_marginEnd="@dimen/followHistoryOllow" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

View File

@ -50,6 +50,7 @@
<string name="mywallet_txt">My Wallet</string>
<string name="coins_txt">Coins</string>
<string name="coins_recharge_txt">Coin Recharge</string>
<string name="bonus_txt">Bonus</string>
<string name="coupons_txt">Coupons</string>
<string name="vip_selector_txt">50% Off</string>
@ -73,6 +74,7 @@
<string name="vip_recharge_txt">Membership Recharge</string>
<string name="vip_noads_txt">Unlimited access to all series for 1 week (No Ads)</string>
<string name="vip_introduce">Auto renew, cancel anytime</string>
<string name="vip_donate_coins">The donate coins will expire in ## days</string>
<string name="monthly_vip_txt">Monthly Vip </string>
<string name="price_tag">$</string>
@ -130,4 +132,7 @@
<string name="language_txt">Language</string>
<string name="default_notification_channel_id">gleestream</string>
<string name="youraccount_isalreadylogged">Your account is already logged in on another device~</string>
<string name="vip_introduce_top">VIP | Auto renew, cancel anytime</string>
<string name="tv_unlock">Unlock:</string>
</resources>

View File

@ -23,6 +23,6 @@ android.nonTransitiveRClass=true
#org.gradle.internal.http.socketTimeout=600000
# uploadCrashlyticsMappingFile
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=26001
systemProp.http.proxyPort=10809
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=26001
systemProp.https.proxyPort=10809