Commit f4e408e6 authored by 王雪伟's avatar 王雪伟

[提交人]:王雪伟

[提交简述] :调整登录接口和加入会员充值弹窗
[实现方案] :
parent 908d8119
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
<meta-data <meta-data
android:name="com.baidu.lbsapi.API_KEY" android:name="com.baidu.lbsapi.API_KEY"
android:value="EeA5p6EzR014yFavoMobr1VRqQEmOihG" /> android:value="EeA5p6EzR014yFavoMobr1VRqQEmOihG" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider" android:authorities="${applicationId}.fileprovider"
...@@ -100,49 +101,49 @@ ...@@ -100,49 +101,49 @@
android:name="org.apache.http.legacy" android:name="org.apache.http.legacy"
android:required="false" /> android:required="false" />
<!-- &lt;!&ndash; 小米推送 &ndash;&gt;--> <!-- &lt;!&ndash; 小米推送 &ndash;&gt;-->
<!-- <service--> <!-- <service-->
<!-- android:name="com.xiaomi.push.service.XMPushService"--> <!-- android:name="com.xiaomi.push.service.XMPushService"-->
<!-- android:enabled="true"--> <!-- android:enabled="true"-->
<!-- android:process=":pushservice" />--> <!-- android:process=":pushservice" />-->
<!-- &lt;!&ndash;注:此service必须在3.0.1版本以后(包括3.0.1版本)加入&ndash;&gt;--> <!-- &lt;!&ndash;注:此service必须在3.0.1版本以后(包括3.0.1版本)加入&ndash;&gt;-->
<!-- <service--> <!-- <service-->
<!-- android:name="com.xiaomi.push.service.XMJobService"--> <!-- android:name="com.xiaomi.push.service.XMJobService"-->
<!-- android:enabled="true"--> <!-- android:enabled="true"-->
<!-- android:exported="false"--> <!-- android:exported="false"-->
<!-- android:permission="android.permission.BIND_JOB_SERVICE"--> <!-- android:permission="android.permission.BIND_JOB_SERVICE"-->
<!-- android:process=":pushservice" />--> <!-- android:process=":pushservice" />-->
<!-- &lt;!&ndash;注:com.xiaomi.xmsf.permission.MIPUSH_RECEIVE这里的包名不能改为app的包名&ndash;&gt;--> <!-- &lt;!&ndash;注:com.xiaomi.xmsf.permission.MIPUSH_RECEIVE这里的包名不能改为app的包名&ndash;&gt;-->
<!-- <service--> <!-- <service-->
<!-- android:name="com.xiaomi.mipush.sdk.PushMessageHandler"--> <!-- android:name="com.xiaomi.mipush.sdk.PushMessageHandler"-->
<!-- android:enabled="true"--> <!-- android:enabled="true"-->
<!-- android:exported="true"--> <!-- android:exported="true"-->
<!-- android:permission="com.xiaomi.xmsf.permission.MIPUSH_RECEIVE" />--> <!-- android:permission="com.xiaomi.xmsf.permission.MIPUSH_RECEIVE" />-->
<!-- &lt;!&ndash;注:此service必须在2.2.5版本以后(包括2.2.5版本)加入&ndash;&gt;--> <!-- &lt;!&ndash;注:此service必须在2.2.5版本以后(包括2.2.5版本)加入&ndash;&gt;-->
<!-- <service--> <!-- <service-->
<!-- android:name="com.xiaomi.mipush.sdk.MessageHandleService"--> <!-- android:name="com.xiaomi.mipush.sdk.MessageHandleService"-->
<!-- android:enabled="true" />--> <!-- android:enabled="true" />-->
<!-- <receiver--> <!-- <receiver-->
<!-- android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"--> <!-- android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"-->
<!-- android:exported="true">--> <!-- android:exported="true">-->
<!-- <intent-filter>--> <!-- <intent-filter>-->
<!-- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />--> <!-- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />--> <!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- </intent-filter>--> <!-- </intent-filter>-->
<!-- </receiver>--> <!-- </receiver>-->
<!-- <receiver--> <!-- <receiver-->
<!-- android:name="com.xiaomi.push.service.receivers.PingReceiver"--> <!-- android:name="com.xiaomi.push.service.receivers.PingReceiver"-->
<!-- android:exported="false"--> <!-- android:exported="false"-->
<!-- android:process=":pushservice">--> <!-- android:process=":pushservice">-->
<!-- <intent-filter>--> <!-- <intent-filter>-->
<!-- <action android:name="com.xiaomi.push.PING_TIMER" />--> <!-- <action android:name="com.xiaomi.push.PING_TIMER" />-->
<!-- </intent-filter>--> <!-- </intent-filter>-->
<!-- </receiver>--> <!-- </receiver>-->
<!-- 小米 --> <!-- 小米 -->
<receiver android:name=".receiver.MessageReceiver"> <receiver android:name=".receiver.MessageReceiver">
<intent-filter> <intent-filter>
...@@ -232,6 +233,14 @@ ...@@ -232,6 +233,14 @@
<action android:name="com.vivo.pushclient.action.RECEIVE" /> <action android:name="com.vivo.pushclient.action.RECEIVE" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<!-- &lt;!&ndash; 适配尺寸 &ndash;&gt;-->
<!-- <meta-data-->
<!-- android:name="design_width_in_dp"-->
<!-- android:value="1080" />-->
<!-- <meta-data-->
<!-- android:name="design_height_in_dp"-->
<!-- android:value="1920" />-->
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -52,6 +52,7 @@ import com.zxhl.cms.runtimepermission.NicePermissionListener; ...@@ -52,6 +52,7 @@ import com.zxhl.cms.runtimepermission.NicePermissionListener;
import com.zxhl.cms.utils.AdCallback; import com.zxhl.cms.utils.AdCallback;
import com.zxhl.cms.utils.AdDataSupport; import com.zxhl.cms.utils.AdDataSupport;
import com.zxhl.cms.utils.EventUtils; import com.zxhl.cms.utils.EventUtils;
import com.zxhl.cms.utils.JumpUtils;
import com.zxhl.cms.utils.LogUtils; import com.zxhl.cms.utils.LogUtils;
import com.zxhl.cms.utils.RxBus; import com.zxhl.cms.utils.RxBus;
import com.zxhl.cms.utils.UserDataUtils; import com.zxhl.cms.utils.UserDataUtils;
...@@ -130,7 +131,8 @@ public class MainActivity extends BaseActivity implements NavigationBottomView.N ...@@ -130,7 +131,8 @@ public class MainActivity extends BaseActivity implements NavigationBottomView.N
mRestartLoginObservable.observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<String>() { mRestartLoginObservable.observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<String>() {
@Override @Override
public void accept(String s) throws Exception { public void accept(String s) throws Exception {
deviceLogin(); // deviceLogin();
JumpUtils.loginBeforeJump();
} }
}, new Consumer<Throwable>() { }, new Consumer<Throwable>() {
@Override @Override
......
...@@ -119,5 +119,6 @@ dependencies { ...@@ -119,5 +119,6 @@ dependencies {
//归因 //归因
api 'com.appsflyer:af-android-sdk:6.3.2' api 'com.appsflyer:af-android-sdk:6.3.2'
api("com.android.installreferrer:installreferrer:2.2") api("com.android.installreferrer:installreferrer:2.2")
//适配
api 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
} }
...@@ -25,6 +25,12 @@ class BecomeVipBannerAdapter : ...@@ -25,6 +25,12 @@ class BecomeVipBannerAdapter :
R.drawable.vip_banner_bj_view, R.drawable.vip_banner_bj_view,
R.drawable.vip_banner_bj_chat, R.drawable.vip_banner_bj_chat,
) )
private var bannerDesc = listOf(
"Video chat with friends",
"Exclusive VIP flag",
"View the album for free",
"Free text chat"
)
constructor( constructor(
content: Context? content: Context?
...@@ -42,6 +48,7 @@ class BecomeVipBannerAdapter : ...@@ -42,6 +48,7 @@ class BecomeVipBannerAdapter :
override fun onBindViewHolder(holder: BecomeVipBannerAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: BecomeVipBannerAdapter.ViewHolder, position: Int) {
// val data = mList[position] // val data = mList[position]
holder.id_banner_img.setImageResource(bannerImg[position]) holder.id_banner_img.setImageResource(bannerImg[position])
holder.id_banner_desc.text = bannerDesc[position]
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
...@@ -52,9 +59,11 @@ class BecomeVipBannerAdapter : ...@@ -52,9 +59,11 @@ class BecomeVipBannerAdapter :
var id_banner_img: ImageView var id_banner_img: ImageView
var id_banner_desc: TextView
constructor(itemView: View) : super(itemView) { constructor(itemView: View) : super(itemView) {
id_banner_img = itemView.findViewById(R.id.id_item_banner_img) id_banner_img = itemView.findViewById(R.id.id_item_banner_img)
id_banner_desc = itemView.findViewById(R.id.id_item_banner_desc)
} }
} }
......
package com.zxhl.cms.pay.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseRecyclerAdapter
import com.zxhl.cms.net.model.chat.RecordEntity
/**
* @author (wangXuewei)
* @datetime 2022-04-12 19:04 GMT+8
* @detail :
*/
class BecomeVipDialogBannerAdapter :
BaseRecyclerAdapter<Any, BecomeVipDialogBannerAdapter.ViewHolder> {
private var mContext: Context? = null
private var bannerBgImg = listOf(
R.drawable.vip_banner_long1,
R.drawable.vip_banner_long1,
R.drawable.vip_banner_long2,
R.drawable.vip_banner_long3,
R.drawable.vip_banner_long4,
)
private var bannerIconImg = listOf(
R.drawable.icon_banner_video,
R.drawable.icon_banner_video,
R.drawable.icon_banner_vip,
R.drawable.icon_banner_view,
R.drawable.icon_banner_chat,
)
private var bannerDesc = listOf(
"Buy a package below to chat with\n a beautiful Girl",
"Video chat with friends",
"Exclusive VIP flag",
"View the album for free",
"Free text chat"
)
constructor(
content: Context?
) : super() {
mContext = content
}
override fun onCreateViewHolder(
holder: ViewGroup,
p1: Int
): BecomeVipDialogBannerAdapter.ViewHolder {
return ViewHolder(
LayoutInflater.from(holder.context)
.inflate(R.layout.item_layout_become_vip_dialog_banner_view, holder, false)
)
}
override fun onBindViewHolder(holder: BecomeVipDialogBannerAdapter.ViewHolder, position: Int) {
holder.banner_bg.setBackgroundResource(bannerBgImg[position])
holder.desc.text = bannerDesc[position]
holder.view_type2.setImageResource(bannerIconImg[position])
if (position == 0) {
holder.view_type1.visibility = View.VISIBLE
holder.view_type2.visibility = View.INVISIBLE
} else {
holder.view_type1.visibility = View.INVISIBLE
holder.view_type2.visibility = View.VISIBLE
}
}
override fun getItemCount(): Int {
return bannerBgImg.size
}
inner class ViewHolder : RecyclerView.ViewHolder {
var banner_bg: RelativeLayout
var view_type1: RelativeLayout
var view_type2: ImageView
var desc: TextView
constructor(itemView: View) : super(itemView) {
banner_bg = itemView.findViewById(R.id.id_rl_item_view)
view_type1 = itemView.findViewById(R.id.id_rl_pay_introduce_type1)
view_type2 = itemView.findViewById(R.id.id_img_pay_introduce_type2)
desc = itemView.findViewById(R.id.id_tv_desc)
}
}
}
\ No newline at end of file
package com.zxhl.cms.pay.view
import android.app.Activity
import android.app.Dialog
import android.util.Log
import android.view.Gravity
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R
import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipDialogBannerAdapter
import com.zxhl.cms.widget.CenterDialog
import com.zxhl.cms.widget.RecyclerViewPageChangeListenerHelper
import com.zxhl.cms.widget.UIndicator
import kotlinx.android.synthetic.main.activity_layout_vip_pay.*
import org.greenrobot.eventbus.EventBus
/**
* @author (wangXuewei)
* @datetime 2022-04-16 16:13 GMT+8
* @detail :
*/
object VipPayDialog {
private var mActivity: Activity? = null;
private var mBannerAdapter: BecomeVipDialogBannerAdapter? = null
private var mCallBack: VipPayCallBack? = null
fun setDialogDismissCallback(callback: VipPayCallBack?) {
this.mCallBack = callback
}
interface VipPayCallBack {
fun pageClose();
fun paySuccess();
fun payCancel();
fun payError();
}
fun showVipPayDialog(activity: Activity) {
this.mActivity = activity;
openPayDialog(activity)
}
private var mDialog: Dialog? = null
private fun openPayDialog(act: Activity) {
if (mDialog == null) {
mDialog = Dialog(act!!, R.style.CenterCompatDialogTheme)
}
val mDialogView = CenterDialog.showBottomDialog(
R.layout.dialog_layout_vip_pay,
act,
mDialog!!,
0,
Gravity.CENTER
)
val pay_banner = mDialogView.findViewById<RecyclerView>(R.id.id_rcl_pay_banner)
val banner_indic = mDialogView.findViewById<UIndicator>(R.id.id_banner_indicator)
val btn_continue = mDialogView.findViewById<TextView>(R.id.id_tv_vip_dialog_pay_btn)
banner_indic.setIndicatorCount(5)
mBannerAdapter = BecomeVipDialogBannerAdapter(act)
pay_banner?.layoutManager = LinearLayoutManager(
act, LinearLayoutManager.HORIZONTAL,
false
)
pay_banner?.adapter = mBannerAdapter
val mPagerSnapHelper = PagerSnapHelper()
mPagerSnapHelper.attachToRecyclerView(pay_banner)
pay_banner.addOnScrollListener(
RecyclerViewPageChangeListenerHelper(mPagerSnapHelper,
object : RecyclerViewPageChangeListenerHelper.OnPageChangeListener {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
}
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
}
override fun onPageSelected(position: Int) {
banner_indic.setSelectPos(position)
}
})
)
btn_continue.setOnClickListener {
mDialog?.dismiss()
}
mDialog?.setOnDismissListener {
mDialog = null
this.mActivity = null
mCallBack?.pageClose()
}
mDialog?.setCanceledOnTouchOutside(false)
mDialog?.setCancelable(false)
if (!act.isFinishing) {
mDialog?.show()
return
}
}
}
\ No newline at end of file
...@@ -115,10 +115,8 @@ class FaceBookLoginUtil { ...@@ -115,10 +115,8 @@ class FaceBookLoginUtil {
} }
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) { override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
// callBack.loginSuccess(lottery)
mLoginCallBack?.onLoginError("net code:$code msg:$errorMsg") mLoginCallBack?.onLoginError("net code:$code msg:$errorMsg")
} }
}) })
} }
......
package com.zxhl.cms.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
/**
* @author (wangXuewei)
* @datetime 2022-04-15 17:16 GMT+8
* @detail :
*/
public class FlowLayout extends ViewGroup {
public FlowLayout(Context context) {
this(context, null);
}
public FlowLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private List<List<View>> mLineViews = new ArrayList<List<View>>();
private List<Integer> mLineHeight = new ArrayList<Integer>();
/**
* 测量所有子View大小,确定ViewGroup的宽高
*
* @param widthMeasureSpec
* @param heightMeasureSpec
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//由于onMeasure会执行多次,避免重复的计算控件个数和高度,这里需要进行清空操作
mLineViews.clear();
mLineHeight.clear();
//获取测量的模式和尺寸大小
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec)-getPaddingLeft()-getPaddingRight();
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec)+getPaddingTop()+getPaddingBottom();
//记录ViewGroup真实的测量宽高
int viewGroupWidth = 0-getPaddingLeft()-getPaddingRight();
int viewGroupHeight = getPaddingTop()+getPaddingBottom();
if (widthMode == MeasureSpec.EXACTLY && heightMode == MeasureSpec.EXACTLY) {
viewGroupWidth = widthSize;
viewGroupHeight = heightSize;
} else {
//当前所占的宽高
int currentLineWidth = 0;
int currentLineHeight = 0;
//用来存储每一行上的子View
List<View> lineView = new ArrayList<View>();
int childViewsCount = getChildCount();
for (int i = 0; i < childViewsCount; i++) {
View childView = getChildAt(i);
//对子View进行测量
measureChild(childView, widthMeasureSpec, heightMeasureSpec);
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) childView.getLayoutParams();
int childViewWidth = childView.getMeasuredWidth() + marginLayoutParams.leftMargin + marginLayoutParams.rightMargin;
int childViewHeight = childView.getMeasuredHeight() + marginLayoutParams.topMargin + marginLayoutParams.bottomMargin;
if (currentLineWidth + childViewWidth > widthSize) {
//当前行宽+子View+左右外边距>ViewGroup的宽度,换行
viewGroupWidth = Math.max(currentLineWidth, widthSize);
viewGroupHeight += currentLineHeight;
//添加行高
mLineHeight.add(currentLineHeight);
//添加行对象
mLineViews.add(lineView);
//new新的一行
lineView = new ArrayList<View>();
//添加行对象里的子View
lineView.add(childView);
currentLineWidth = childViewWidth;
} else {
//当前行宽+子View+左右外边距<=ViewGroup的宽度,不换行
currentLineWidth += childViewWidth;
currentLineHeight = Math.max(currentLineHeight, childViewHeight);
//添加行对象里的子View
lineView.add(childView);
}
if (i == childViewsCount - 1) {
//最后一个子View的时候
//添加行对象
mLineViews.add(lineView);
viewGroupWidth = Math.max(childViewWidth, viewGroupWidth);
viewGroupHeight += childViewHeight;
//添加行高
mLineHeight.add(currentLineHeight);
}
}
}
setMeasuredDimension(viewGroupWidth, viewGroupHeight);
}
/**
* 设置ViewGroup里子View的具体位置
*
* @param changed
* @param l
* @param t
* @param r
* @param b
*/
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int left = getPaddingLeft();
int top = getPaddingTop();
//一共有几行
int lines = mLineViews.size();
for (int i = 0; i < lines; i++) {
//每行行高
int lineHeight = mLineHeight.get(i);
//行内有几个子View
List<View> viewList = mLineViews.get(i);
int views = viewList.size();
for (int j = 0; j < views; j++) {
View view = viewList.get(j);
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) view.getLayoutParams();
int vl = left + marginLayoutParams.leftMargin;
int vt = top + marginLayoutParams.topMargin;
int vr = vl + view.getMeasuredWidth();
int vb = vt + view.getMeasuredHeight();
view.layout(vl, vt, vr, vb);
left += view.getMeasuredWidth() + marginLayoutParams.leftMargin + marginLayoutParams.rightMargin;
}
left = getPaddingLeft();
top += lineHeight;
}
}
/**
* 指定ViewGroup的LayoutParams
*
* @param attrs
* @return
*/
@Override
public LayoutParams generateLayoutParams(AttributeSet attrs) {
return new MarginLayoutParams(getContext(), attrs);
}
}
package com.zxhl.cms.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
/**
* @author (wangXuewei)
* @datetime 2022-04-16 15:37 GMT+8
* @detail :
*/
public class HorizontalAutoBrLayout extends ViewGroup {
/**
* 可使用的最大宽度
*/
private int maxWidth;
public HorizontalAutoBrLayout(Context context) {
super(context);
}
public HorizontalAutoBrLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HorizontalAutoBrLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
maxWidth = MeasureSpec.getSize(widthMeasureSpec);
/**
* 容器的高度,也就是本布局的高度。初始化赋值为0.
*/
int containorHeight = 0;
/**
* 获取该布局内子组件的个数
*/
int count = getChildCount();
for (int i = 0; i < count; i++) {
View view = getChildAt(i);
/**
* measure(int widthMeasureSpec,int
* heightMeasureSpec)用于设置子组件显示模式.有三个值:
* MeasureSpec.AT_MOST 该组件可以设置自己的大小,但是最大不能超过其父组件的限定
* MeasureSpec.EXACTLY 无论该组件设置大小是多少,都只能按照父组件限制的大小来显示
* MeasureSpec.UNSPECIFIED 该组件不受父组件的限制,可以设置任意大小
*/
view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
// 把每个子组件的高度相加就是该组件要显示的高度。
containorHeight += view.getMeasuredHeight();
}
/**
* onMeasure方法的关键代码,该句设置父容器的大小。
*/
setMeasuredDimension(maxWidth, containorHeight);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// 获取子组件数
int childCount = getChildCount();
// 子组件行数,初始化赋值为1
int row = 1;
// 子组件的左边“坐标”
int left = 0;
// 子组件的右边“坐标”
int right = 0;
// 子组件的顶部“坐标”
int top = 0;
// 子组件的底部“坐标”
int bottom = 0;
// 在父组件中设置的padding属性的值,该值显然也会影响到子组件在屏幕的显示位置
int p = getPaddingLeft();
for (int i = 0; i < childCount; i++) {
View view = getChildAt(i);
// 测量子组件的宽
int width = view.getMeasuredWidth();
// 测量子组件的高
int height = view.getMeasuredHeight();
left = p + right;
right = left + width;
top = p * row + height * (row - 1);
bottom = top + height;
if (right > maxWidth) {
row++;
//每次换行后要将子组件左边“坐标”与右边“坐标”重新初始化
left = 0;
right = 0;
left = p + right;
right = left + width;
top = p * row + height * (row - 1);
bottom = top + height;
}
// 最后按照计算出来的“坐标”将子组件放在父容器内
view.layout(left, top, right, bottom);
}
}
}
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="300dp"
android:layout_height="502dp"
android:layout_centerInParent="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rcl_pay_banner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.zxhl.cms.widget.UIndicator
android:id="@+id/id_banner_indicator"
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_marginTop="200dp"
android:layout_centerHorizontal="true"
app:circle_circle_radius="4dp"
app:normal_color="#66ffffff"
android:layout_marginStart="10dp"
app:orientation="horizontal"
app:selected_color="#ffffffff"
app:spacing="10dp"
app:style="circle_circle" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rcl_pay_price_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/id_rcl_pay_banner"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/id_tv_vip_dialog_pay_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_margin="20dp"
android:background="@drawable/shape_8857ff_bd8aff_bg_r25"
android:gravity="center"
android:text="Continue"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_horizontal" android:gravity="center_horizontal"
...@@ -8,9 +8,19 @@ ...@@ -8,9 +8,19 @@
<ImageView <ImageView
android:id="@+id/id_item_banner_img" android:id="@+id/id_item_banner_img"
android:layout_width="match_parent" android:layout_width="match_parent"
android:scaleType="fitXY" android:layout_height="wrap_content"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:src="@drawable/vip_banner_bj_chat" android:scaleType="fitXY"
android:layout_height="wrap_content" /> android:src="@drawable/vip_banner_bj_chat" />
<TextView
android:id="@+id/id_item_banner_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:paddingTop="50dp"
android:text=""
android:textColor="@color/white"
android:textSize="18sp" />
</FrameLayout> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/id_rl_item_view"
android:background="@drawable/vip_banner_long1"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/id_rl_pay_introduce_type1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="70dp"
android:layout_centerHorizontal="true"
android:src="@drawable/icon_photo_dian" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/head_img_photo_boy" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:src="@drawable/icon_shipin_green" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/head_img_photo_girl" />
</LinearLayout>
</RelativeLayout>
<ImageView
android:id="@+id/id_img_pay_introduce_type2"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:scaleType="centerInside"
android:src="@drawable/icon_banner_video"
android:visibility="gone" />
<TextView
android:id="@+id/id_tv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/id_rl_pay_introduce_type1"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:gravity="center"
android:textColor="@color/white"
android:textSize="15sp" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Indicator">
<!--未选中的指示器颜色-->
<attr name="normal_color" format="reference|color" />
<!--选中的指示器颜色-->
<attr name="selected_color" format="reference|color" />
<!--指示器每个item之间的间距-->
<attr name="spacing" format="dimension" />
<!--指示器排列方向-->
<attr name="orientation" format="enum">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
<!--指示器类型 命名规则:未选中样式_选中样式-->
<attr name="style" format="enum">
<!--都是圆点-->
<enum name="circle_circle" value="0"/>
<!--都是方形-->
<enum name="rect_rect" value="1" />
<!--未选中是圆点,选中是方形-->
<enum name="circle_rect" value="2" />
</attr>
<!--都是圆点指示器半径大小-->
<attr name="circle_circle_radius" format="dimension" />
<!--都是方形指示器长度-->
<attr name="rect_rect_itemWidth" format="dimension" />
<!--都是方形指示器高度-->
<attr name="rect_rect_itemHeight" format="dimension" />
<!--都是方形指示器圆角-->
<attr name="rect_rect_corner" format="dimension" />
<!--circle_rect 模式圆点半径-->
<attr name="circle_rect_radius" format="dimension" />
<!--circle_rect 模式方形宽度-->
<attr name="circle_rect_itemWidth" format="dimension" />
<!--circle_rect 模式方形高度-->
<attr name="circle_rect_itemHeight" format="dimension" />
<!--circle_rect 模式方形圆角-->
<attr name="circle_rect_corner" format="dimension" />
</declare-styleable>
</resources>
\ No newline at end of file
...@@ -42,6 +42,12 @@ ...@@ -42,6 +42,12 @@
<item name="android:windowExitAnimation">@anim/anim_top_out</item> <item name="android:windowExitAnimation">@anim/anim_top_out</item>
</style> </style>
<style name="AnimBottom2" parent="@android:style/Animation">
<item name="android:windowEnterAnimation">@anim/anim_bottom_enter</item>
<item name="android:windowExitAnimation">@anim/anim_bottom_exit</item>
</style>
<style name="progressbar_loading"> <style name="progressbar_loading">
<item name="android:indeterminateDrawable">@anim/anim_progress_loading</item> <item name="android:indeterminateDrawable">@anim/anim_progress_loading</item>
</style> </style>
......
...@@ -64,7 +64,6 @@ class LoginBeforeActivity : BaseActivity() { ...@@ -64,7 +64,6 @@ class LoginBeforeActivity : BaseActivity() {
EventUtils.onEvent("GoogleLoginError", errorMsg) EventUtils.onEvent("GoogleLoginError", errorMsg)
runOnUiThread { runOnUiThread {
mLoading?.setResult(false, "login error", 1000) mLoading?.setResult(false, "login error", 1000)
imLogin()
} }
} }
}) })
...@@ -173,24 +172,31 @@ class LoginBeforeActivity : BaseActivity() { ...@@ -173,24 +172,31 @@ class LoginBeforeActivity : BaseActivity() {
} }
private fun imLogin(){ private fun imLogin(){
ApiClient.userInfoAPi.deviceLogin().compose(RxSchedulers.observableIO2Main()) UserDataUtils.updateUserInfo(AdCallback { _, _ ->
.subscribe(object : BaseObserver<UserInfo>() { JumpUtils.activityJump(
override fun onSuccess(result: UserInfo) { RounterBus.getRounter(RounterApi::class.java).getIntentActivityMain()
val token = result.token )
SettingPreference.saveToken(token) finish()
UserDataUtils.updateUserInfo(AdCallback { _, _ -> })
JumpUtils.activityJump(
RounterBus.getRounter(RounterApi::class.java).getIntentActivityMain() // ApiClient.userInfoAPi.deviceLogin().compose(RxSchedulers.observableIO2Main())
) // .subscribe(object : BaseObserver<UserInfo>() {
finish() // override fun onSuccess(result: UserInfo) {
}) // val token = result.token
} // SettingPreference.saveToken(token)
// UserDataUtils.updateUserInfo(AdCallback { _, _ ->
override fun onFailure(e: Throwable, code: String, errorMsg: String) { // JumpUtils.activityJump(
SettingPreference.saveToken("") // RounterBus.getRounter(RounterApi::class.java).getIntentActivityMain()
SettingPreference.saveUserInfo(null) // )
// finish()
} // })
}) // }
//
// override fun onFailure(e: Throwable, code: String, errorMsg: String) {
// SettingPreference.saveToken("")
// SettingPreference.saveUserInfo(null)
//
// }
// })
} }
} }
\ No newline at end of file
...@@ -40,26 +40,8 @@ class SplashActivity : BaseActivity(), SplashContract.View { ...@@ -40,26 +40,8 @@ class SplashActivity : BaseActivity(), SplashContract.View {
finish() finish()
return return
} }
// EventUtils.onEvent("app_start") EventUtils.onEvent("app_start")
if (SettingPreference.getFirstApp()) { if (SettingPreference.getFirstApp()) {
// if (TextUtils.equals(
// Utils.getChannel(this),
// "toutiao"
// ) || TextUtils.equals(Utils.getChannel(this), "toutiao_h5")
// ) {
//
// mPresenter = SplashPresenter(this@SplashActivity, this@SplashActivity)
// initListener()
// } else {
// CenterDialog.showPrivacyProtocol(this, object : View.OnClickListener {
// override fun onClick(p0: View?) {
// SettingPreference.setFirstApp()
// mPresenter = SplashPresenter(this@SplashActivity, this@SplashActivity)
// initListener()
// }
// })
//
// }
CenterDialog.showPrivacyProtocol(this, object : View.OnClickListener { CenterDialog.showPrivacyProtocol(this, object : View.OnClickListener {
override fun onClick(p0: View?) { override fun onClick(p0: View?) {
SettingPreference.setFirstApp() SettingPreference.setFirstApp()
...@@ -102,13 +84,9 @@ class SplashActivity : BaseActivity(), SplashContract.View { ...@@ -102,13 +84,9 @@ class SplashActivity : BaseActivity(), SplashContract.View {
if (user == null && TextUtils.isEmpty(token)) { if (user == null && TextUtils.isEmpty(token)) {
JumpUtils.loginBeforeJump() JumpUtils.loginBeforeJump()
} else { } else {
if (TextUtils.equals(SettingPreference.getUserHasData(), "0")) { JumpUtils.activityJump(
JumpUtils.SettingInfoJump() RounterBus.getRounter(RounterApi::class.java).getIntentActivityMain()
} else { )
JumpUtils.activityJump(
RounterBus.getRounter(RounterApi::class.java).getIntentActivityMain()
)
}
} }
finish() finish()
} }
......
...@@ -37,8 +37,9 @@ import org.greenrobot.eventbus.EventBus ...@@ -37,8 +37,9 @@ import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
/**
//用户详情页面 * @detail : 国内版用户详情(暂时未使用)
*/
class UserDetailActivity : BaseActivity(), UserDetailContract.View, class UserDetailActivity : BaseActivity(), UserDetailContract.View,
ImageWatcher.OnPictureLongPressListener { ImageWatcher.OnPictureLongPressListener {
private var mPresenter: UserDetailPresenter? = null private var mPresenter: UserDetailPresenter? = null
......
package com.zxhl.main.page.activity package com.zxhl.main.page.activity
import android.graphics.Color
import android.view.View import android.view.View
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.zxhl.cms.AppContext import com.zxhl.cms.AppContext
import com.zxhl.cms.common.base.BaseActivity import com.zxhl.cms.common.base.BaseActivity
import com.zxhl.cms.net.model.box.HomeListEntity import com.zxhl.cms.net.model.box.HomeListEntity
import com.zxhl.cms.pay.view.VipPayDialog
import com.zxhl.cms.utils.OnRecycleItemClickListener import com.zxhl.cms.utils.OnRecycleItemClickListener
import com.zxhl.cms.utils.Utils
import com.zxhl.main.R import com.zxhl.main.R
import com.zxhl.main.page.adapter.UserPhotosAdapter import com.zxhl.main.page.adapter.UserPhotosAdapter
import com.zxhl.main.page.contract.UserDetailsContract import com.zxhl.main.page.contract.UserDetailsContract
...@@ -64,6 +71,10 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View, ...@@ -64,6 +71,10 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View,
} }
id_ll_user_details_call_video -> { id_ll_user_details_call_video -> {
showToast("call video") showToast("call video")
VipPayDialog.showVipPayDialog(this)
}
id_ll_user_details_like_btn -> {
showToast("like")
} }
} }
} }
...@@ -76,6 +87,8 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View, ...@@ -76,6 +87,8 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View,
override fun setUserDetails(result: HomeListEntity) { override fun setUserDetails(result: HomeListEntity) {
//Name //Name
id_tv_user_details_name.text = result.nickname id_tv_user_details_name.text = result.nickname
//tag
setPersonalTagUI(listOf("aaaa","cc","bbbbbb","d","eeeee","aaafaa","aaaaag",))
mPhotoAdapter?.clear() mPhotoAdapter?.clear()
mPhotoAdapter?.appendToList(result.picturesList) mPhotoAdapter?.appendToList(result.picturesList)
...@@ -87,11 +100,35 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View, ...@@ -87,11 +100,35 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View,
} }
override fun followCallBack(boolean: Boolean) { override fun followCallBack(boolean: Boolean) {
if (boolean) {
id_img_user_details_like.setImageResource(R.drawable.icon_like_click_user2)
id_tv_user_details_like_num.setTextColor(Color.parseColor("#E838AC"))
} else {
id_img_user_details_like.setImageResource(R.drawable.icon_like_default_user2)
id_tv_user_details_like_num.setTextColor(Color.parseColor("#666666"))
}
} }
override fun onItemClick(view: View?, position: Int, data: String?) { override fun onItemClick(view: View?, position: Int, data: String?) {
mPhotoAdapter?.setSelectPhoto(position) mPhotoAdapter?.setSelectPhoto(position)
id_img_user_details_photo.setLoadImageUrl(data, true) id_img_user_details_photo.setLoadImageUrl(data, true)
} }
//设置标签UI
private fun setPersonalTagUI(tagList: List<String>) {
id_fl_tag_list_view.removeAllViews()
val lps = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
lps.setMargins(Utils.dip2px(5), Utils.dip2px(5), Utils.dip2px(5), Utils.dip2px(5))
for (tagStr in tagList) {
var tagView = TextView(this)
tagView.text = tagStr
tagView.textSize = 14f
tagView.setTextColor(Color.parseColor("#824FFF"))
tagView.background = resources.getDrawable(R.drawable.shape_eae1ff_r3)
tagView.setPadding(Utils.dip2px(5), Utils.dip2px(2), Utils.dip2px(5), Utils.dip2px(2))
tagView.layoutParams = lps
id_fl_tag_list_view.addView(tagView)
}
}
} }
\ No newline at end of file
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
<SurfaceView <SurfaceView
android:id="@+id/id_sfv_user_detail_video" android:id="@+id/id_sfv_user_detail_video"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="320dp" android:layout_height="360dp"
android:visibility="gone" /> android:visibility="gone" />
<com.zxhl.cms.widget.RecycleImageView <com.zxhl.cms.widget.RecycleImageView
android:id="@+id/id_img_user_details_photo" android:id="@+id/id_img_user_details_photo"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="320dp" /> android:layout_height="360dp" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rcl_user_details_photo_list" android:id="@+id/id_rcl_user_details_photo_list"
...@@ -145,110 +145,44 @@ ...@@ -145,110 +145,44 @@
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="14sp" /> android:textSize="14sp" />
<com.zxhl.cms.widget.FlowLayout <com.zxhl.cms.widget.HorizontalAutoBrLayout
android:id="@+id/id_fl_tag_list_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@+id/id_tv_personal_tag" android:layout_below="@+id/id_tv_personal_tag"
android:layout_marginLeft="5dp" android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"> android:layout_marginRight="5dp">
<TextView </com.zxhl.cms.widget.HorizontalAutoBrLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="Introvert"
android:textColor="#824FFF" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="Extrovert"
android:textColor="#824FFF" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="Bold"
android:textColor="#824FFF" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="Hardworking"
android:textColor="#824FFF" />
<TextView <LinearLayout
android:layout_width="wrap_content" android:id="@+id/id_ll_user_details_like_btn"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_margin="5dp" android:layout_height="wrap_content"
android:background="@drawable/shape_eae1ff_r3" android:layout_below="@id/id_img_user_details_photo"
android:paddingLeft="5dp" android:layout_alignParentEnd="true"
android:paddingTop="2.5dp" android:layout_marginTop="15.5dp"
android:paddingRight="5dp" android:layout_marginEnd="10dp"
android:paddingBottom="2.5dp" android:gravity="center"
android:text="Deligent" android:orientation="vertical">
android:textColor="#824FFF" />
<TextView <ImageView
android:id="@+id/id_img_user_details_like"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="5dp" android:src="@drawable/icon_like_default_user2" />
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="Coquetry"
android:textColor="#824FFF" />
<TextView <TextView
android:id="@+id/id_tv_user_details_like_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="5dp" android:layout_marginTop="5dp"
android:background="@drawable/shape_eae1ff_r3" android:text="0"
android:paddingLeft="5dp" android:textColor="@color/color_666666"
android:paddingTop="2.5dp" android:textSize="13sp" />
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="watch movie"
android:textColor="#824FFF" />
<TextView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/shape_eae1ff_r3"
android:paddingLeft="5dp"
android:paddingTop="2.5dp"
android:paddingRight="5dp"
android:paddingBottom="2.5dp"
android:text="adventure"
android:textColor="#824FFF" />
</com.zxhl.cms.widget.FlowLayout>
</RelativeLayout> </RelativeLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
...@@ -270,6 +204,7 @@ ...@@ -270,6 +204,7 @@
android:layout_marginRight="20dp" android:layout_marginRight="20dp"
android:src="@drawable/icon_jubao_yuan" /> android:src="@drawable/icon_jubao_yuan" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment