Commit fc12fd52 authored by jyx's avatar jyx

添加QQ群客服

parent 840353e1
...@@ -53,6 +53,16 @@ object Constant { ...@@ -53,6 +53,16 @@ object Constant {
*/ */
const val ISFIRSTENTER = "isfirstenter" const val ISFIRSTENTER = "isfirstenter"
/**
* 我的页面第一次邀请提醒
*/
const val FIRST_SHARE_MY = "first_share_my"
/**
* 分红页面第一次邀请提醒
*/
const val FIRST_SHARE_INVITED = "first_share_invited"
/** /**
* 存储地址 /storage/emulated/0/test/ * 存储地址 /storage/emulated/0/test/
*/ */
......
...@@ -31,15 +31,16 @@ object CustomerServiceManager { ...@@ -31,15 +31,16 @@ object CustomerServiceManager {
/**************** /****************
* *
* 发起添加群流程。群号:淘金空间官方6群(882880585) 的 key 为: qzUgFmCBsQxVAyPUm8Mi7-UtJu9m5-m8 * 发起添加群流程。群号:好赚钱官方1群(971534757) 的 key 为: kf-7yVcbY2iKltXVDOtVCPez1zCBNcl4
* 调用 joinQQGroup(qzUgFmCBsQxVAyPUm8Mi7-UtJu9m5-m8) 即可发起手Q客户端申请加群 淘金空间官方6群(882880585) * 调用 joinQQGroup(kf-7yVcbY2iKltXVDOtVCPez1zCBNcl4) 即可发起手Q客户端申请加群 好赚钱官方1群(971534757)
* *
* @param key 由官网生成的key * @param key 由官网生成的key
* @return 返回true表示呼起手Q成功,返回fals表示呼起失败 * @return 返回true表示呼起手Q成功,返回false表示呼起失败
*/ ******************/
fun joinQQGroup(key: String, activity: Activity) {
fun joinQQGroup(url: String, activity: Activity) {
val intent = Intent() val intent = Intent()
intent.data = Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26k%3D$key") intent.data = Uri.parse(url)
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try { try {
activity.startActivity(intent) activity.startActivity(intent)
......
...@@ -79,6 +79,8 @@ public class UserManager { ...@@ -79,6 +79,8 @@ public class UserManager {
private static final String WX_OPENID = "wx_openid"; private static final String WX_OPENID = "wx_openid";
public static UserManager getInstance() { public static UserManager getInstance() {
if (_inst != null) { if (_inst != null) {
return _inst; return _inst;
......
...@@ -11,8 +11,17 @@ public class MyInfo implements Serializable { ...@@ -11,8 +11,17 @@ public class MyInfo implements Serializable {
*/ */
private UserMsgBean userMsg; private UserMsgBean userMsg;
private QqMsgBean qqMsg;
private List<AutoListBean> autoList; private List<AutoListBean> autoList;
public void setQqMsg(QqMsgBean qqMsg) {
this.qqMsg = qqMsg;
}
public QqMsgBean getQqMsg() {
return qqMsg;
}
public UserMsgBean getUserMsg() { public UserMsgBean getUserMsg() {
return userMsg; return userMsg;
} }
...@@ -251,4 +260,62 @@ public class MyInfo implements Serializable { ...@@ -251,4 +260,62 @@ public class MyInfo implements Serializable {
} }
} }
} }
/**
* useqq : {"qq":"971534757","name":"好赚钱官方1群","url":"mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3Dkf-7yVcbY2iKltXVDOtVCPez1zCBNcl4"}
*/
public class QqMsgBean implements Serializable {
private UseqqBean useqq;
public UseqqBean getUseqq() {
return useqq;
}
public void setUseqq(UseqqBean useQQ) {
this.useqq = useQQ;
}
public UserMsgBean getUserMsg() {
return userMsg;
}
public class UseqqBean implements Serializable {
/**
* qq : 971534757
* name : 好赚钱官方1群
* url : mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3Dkf-7yVcbY2iKltXVDOtVCPez1zCBNcl4
*/
private String qq;
private String name;
private String url;
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
}
} }
...@@ -26,6 +26,7 @@ import com.mints.goodmoney.ui.adapter.FriendsPagerAdapter ...@@ -26,6 +26,7 @@ import com.mints.goodmoney.ui.adapter.FriendsPagerAdapter
import com.mints.goodmoney.ui.adapter.InvitedAdapter import com.mints.goodmoney.ui.adapter.InvitedAdapter
import com.mints.goodmoney.ui.fragment.base.BaseFragment import com.mints.goodmoney.ui.fragment.base.BaseFragment
import com.mints.goodmoney.ui.widgets.BonusDialog import com.mints.goodmoney.ui.widgets.BonusDialog
import com.mints.goodmoney.ui.widgets.CustomDialogAsApple
import com.mints.goodmoney.ui.widgets.DialogListener import com.mints.goodmoney.ui.widgets.DialogListener
import com.mints.goodmoney.utils.ImageUtil import com.mints.goodmoney.utils.ImageUtil
import com.mints.goodmoney.utils.SpanUtils import com.mints.goodmoney.utils.SpanUtils
...@@ -33,6 +34,7 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout ...@@ -33,6 +34,7 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshListener import com.scwang.smartrefresh.layout.listener.OnRefreshListener
import kotlinx.android.synthetic.main.fragment_main_friends.* import kotlinx.android.synthetic.main.fragment_main_friends.*
import kotlinx.android.synthetic.main.header_layout.* import kotlinx.android.synthetic.main.header_layout.*
import net.grandcentrix.tray.AppPreferences
/** /**
* 描述:邀请好友 * 描述:邀请好友
...@@ -65,6 +67,10 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC ...@@ -65,6 +67,10 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC
private var rope: YoYo.YoYoString? = null private var rope: YoYo.YoYoString? = null
private var cdaa: CustomDialogAsApple? = null
private val ps by lazy { AppPreferences(context) }
override fun getContentViewLayoutID() = R.layout.fragment_main_friends override fun getContentViewLayoutID() = R.layout.fragment_main_friends
override fun initViewsAndEvents() { override fun initViewsAndEvents() {
...@@ -339,6 +345,10 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC ...@@ -339,6 +345,10 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC
} }
R.id.btn_invite -> { R.id.btn_invite -> {
// 邀请好友 // 邀请好友
if (!ps.getBoolean(Constant.FIRST_SHARE_INVITED, false)) {
// 第一次邀请提示弹框
firstWeChatInvite()
} else {
val wechatSp = Platform.ShareParams() val wechatSp = Platform.ShareParams()
wechatSp.shareType = Platform.SHARE_WEBPAGE wechatSp.shareType = Platform.SHARE_WEBPAGE
wechatSp.title = Constant.SHARE_TITLE wechatSp.title = Constant.SHARE_TITLE
...@@ -352,6 +362,7 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC ...@@ -352,6 +362,7 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC
} else { } else {
showToast("请先安装微信") showToast("请先安装微信")
} }
}
} }
R.id.tv_right_subtitle -> { R.id.tv_right_subtitle -> {
...@@ -435,4 +446,44 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC ...@@ -435,4 +446,44 @@ class FriendsFragment : BaseFragment(), FriendsView, OnRefreshListener, View.OnC
} }
} }
/**
* 第一次微信分享弹框
*/
private fun firstWeChatInvite() {
cdaa = CustomDialogAsApple(context, object : DialogListener() {
override fun onClick(v: View) {
if (cdaa != null && cdaa!!.isShowing) {
cdaa!!.dismiss()
}
when (v.id) {
R.id.dialog_btn_left -> {
}
R.id.dialog_btn_right -> {
ps.put(Constant.FIRST_SHARE_INVITED, true)
val wechatSp = Platform.ShareParams()
wechatSp.shareType = Platform.SHARE_WEBPAGE
wechatSp.title = Constant.SHARE_TITLE
wechatSp.text = Constant.SHARE_CONTENT
wechatSp.imageData = ImageUtil.drawableToBitmap(ContextCompat.getDrawable(requireContext(), R.mipmap.ic_launcher))
wechatSp.url = Constant.SHARE_URL
val wechat = ShareSDK.getPlatform(Wechat.NAME)
if (wechat.isClientValid) {
// 执行图文分享
wechat.share(wechatSp)
} else {
showToast("请先安装微信")
}
}
}
}
})
cdaa!!.setTitle("提示")
cdaa!!.setContent("分享用户需登录才能获得贡献值")
cdaa!!.setLeft("取消")
cdaa!!.setRight("打开微信")
cdaa!!.show()
}
} }
\ No newline at end of file
...@@ -46,6 +46,7 @@ import kotlinx.android.synthetic.main.item_fragment_main_my_customer_service.* ...@@ -46,6 +46,7 @@ import kotlinx.android.synthetic.main.item_fragment_main_my_customer_service.*
import kotlinx.android.synthetic.main.item_fragment_main_my_promotions.* import kotlinx.android.synthetic.main.item_fragment_main_my_promotions.*
import kotlinx.android.synthetic.main.item_fragment_main_my_title.* import kotlinx.android.synthetic.main.item_fragment_main_my_title.*
import kotlinx.android.synthetic.main.view_title.* import kotlinx.android.synthetic.main.view_title.*
import net.grandcentrix.tray.AppPreferences
import java.math.BigDecimal import java.math.BigDecimal
import java.util.* import java.util.*
...@@ -57,6 +58,7 @@ import java.util.* ...@@ -57,6 +58,7 @@ import java.util.*
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshListener, View.OnClickListener, AdapterView.OnItemClickListener { class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshListener, View.OnClickListener, AdapterView.OnItemClickListener {
private val ps by lazy { AppPreferences(context) }
private val myPresenter by lazy { MyPresenter() } private val myPresenter by lazy { MyPresenter() }
private val userManager by lazy { UserManager.getInstance() } private val userManager by lazy { UserManager.getInstance() }
private lateinit var vedioAdingManager: VedioAdingManager private lateinit var vedioAdingManager: VedioAdingManager
...@@ -79,7 +81,6 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -79,7 +81,6 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
// 轮播图只展示一次 // 轮播图只展示一次
private var bannerFlag = false private var bannerFlag = false
// 轮播图只展示一次
private var cdaa: CustomDialogAsApple? = null private var cdaa: CustomDialogAsApple? = null
override fun getContentViewLayoutID() = R.layout.fragment_main_my override fun getContentViewLayoutID() = R.layout.fragment_main_my
...@@ -117,7 +118,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -117,7 +118,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
item_title_invitecode.setOnClickListener(this) item_title_invitecode.setOnClickListener(this)
item_title_invitecode_copy.setOnClickListener(this) item_title_invitecode_copy.setOnClickListener(this)
ll_my_login.setOnClickListener(this) ll_my_login.setOnClickListener(this)
item_bottom_text.setOnClickListener(this) item_customer_service.setOnClickListener(this)
item_promotions_egv.onItemClickListener = this item_promotions_egv.onItemClickListener = this
} }
...@@ -401,8 +402,11 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -401,8 +402,11 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
* 处理列表数据 * 处理列表数据
*/ */
private fun handleRecyData() { private fun handleRecyData() {
dataList.clear() userConfig?.let {
item_bottom_qqGroupNum.text = userConfig?.qqMsg?.useqq?.name + ":" + userConfig?.qqMsg?.useqq?.qq
}
dataList.clear()
dataList.addAll(userConfig!!.autoList) dataList.addAll(userConfig!!.autoList)
mainMyAdapter?.notifyDataSetChanged() mainMyAdapter?.notifyDataSetChanged()
} }
...@@ -430,6 +434,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -430,6 +434,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
if (taskBean.otherConfig != null) { if (taskBean.otherConfig != null) {
when (taskBean.otherConfig.status) { when (taskBean.otherConfig.status) {
0 -> { 0 -> {
if (!ps.getBoolean(Constant.FIRST_SHARE_MY, false)) {
// 第一次邀请提示弹框
firstWeChatInvite()
} else {
val wechatSp = ShareParams() val wechatSp = ShareParams()
wechatSp.shareType = Platform.SHARE_WEBPAGE wechatSp.shareType = Platform.SHARE_WEBPAGE
wechatSp.title = Constant.SHARE_TITLE wechatSp.title = Constant.SHARE_TITLE
...@@ -445,6 +453,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -445,6 +453,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
showToast("请先安装微信") showToast("请先安装微信")
} }
} }
}
1 -> { 1 -> {
val bundle = Bundle() val bundle = Bundle()
bundle.putInt(Constant.MAIN_CUR_COIN, taskBean.otherConfig.coin) bundle.putInt(Constant.MAIN_CUR_COIN, taskBean.otherConfig.coin)
...@@ -453,6 +462,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -453,6 +462,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
readyGo(AwardActivity::class.java, bundle) readyGo(AwardActivity::class.java, bundle)
} }
2 -> { 2 -> {
if (!ps.getBoolean(Constant.FIRST_SHARE_MY, false)) {
// 第一次邀请提示弹框
firstWeChatInvite()
} else {
val wechatSp = ShareParams() val wechatSp = ShareParams()
wechatSp.shareType = Platform.SHARE_WEBPAGE wechatSp.shareType = Platform.SHARE_WEBPAGE
wechatSp.title = Constant.SHARE_TITLE wechatSp.title = Constant.SHARE_TITLE
...@@ -471,6 +484,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -471,6 +484,7 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
} }
} }
} }
}
// 看福利视频赚金币 // 看福利视频赚金币
MainMyAdapter.APP_VEDIO -> { MainMyAdapter.APP_VEDIO -> {
if (taskBean.otherConfig != null) { if (taskBean.otherConfig != null) {
...@@ -542,10 +556,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -542,10 +556,10 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
// 跳转QQ客服 // 跳转QQ客服
jumpQQ() jumpQQ()
} }
// R.id.item_bottom_text -> { R.id.item_customer_service -> {
// 跳转加入QQ群 // 跳转加入QQ群
// CustomerServiceManager.joinQQ(activity!!) jumpQQGroup()
// } }
R.id.item_title_id -> { R.id.item_title_id -> {
if (!userManager.userIsLogin()) { if (!userManager.userIsLogin()) {
readyGo(LoginActivity::class.java) readyGo(LoginActivity::class.java)
...@@ -736,4 +750,73 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi ...@@ -736,4 +750,73 @@ class MyFragment : BaseFragment(), MyView, OnItemChildClickListener, OnRefreshLi
cdaa!!.setRight("打开") cdaa!!.setRight("打开")
cdaa!!.show() cdaa!!.show()
} }
/**
* 跳转QQ群弹框
*/
private fun jumpQQGroup() {
cdaa = CustomDialogAsApple(context, object : DialogListener() {
override fun onClick(v: View) {
if (cdaa != null && cdaa!!.isShowing) {
cdaa!!.dismiss()
}
when (v.id) {
R.id.dialog_btn_left -> {
}
R.id.dialog_btn_right -> {
userConfig?.let {
CustomerServiceManager.joinQQGroup(it.qqMsg.useqq.url, activity!!)
}
}
}
}
})
cdaa!!.setTitle("提示")
cdaa!!.setContent("好赚钱想要打开QQ")
cdaa!!.setLeft("取消")
cdaa!!.setRight("打开")
cdaa!!.show()
}
/**
* 第一次微信分享弹框
*/
private fun firstWeChatInvite() {
cdaa = CustomDialogAsApple(context, object : DialogListener() {
override fun onClick(v: View) {
if (cdaa != null && cdaa!!.isShowing) {
cdaa!!.dismiss()
}
when (v.id) {
R.id.dialog_btn_left -> {
}
R.id.dialog_btn_right -> {
ps.put(Constant.FIRST_SHARE_MY, true)
val wechatSp = ShareParams()
wechatSp.shareType = Platform.SHARE_WEBPAGE
wechatSp.title = Constant.SHARE_TITLE
wechatSp.text = Constant.SHARE_CONTENT
wechatSp.imageData = ImageUtil.drawableToBitmap(ContextCompat.getDrawable(requireContext(), R.mipmap.ic_launcher))
wechatSp.url = Constant.SHARE_URL
val wechat = ShareSDK.getPlatform(Wechat.NAME)
if (wechat.isClientValid) {
myPresenter.cmtShareStatus()
// 执行图文分享
wechat.share(wechatSp)
} else {
showToast("请先安装微信")
}
}
}
}
})
cdaa!!.setTitle("提示")
cdaa!!.setContent("分享用户需登录才能获得贡献值")
cdaa!!.setLeft("取消")
cdaa!!.setRight("打开微信")
cdaa!!.show()
}
} }
\ No newline at end of file
...@@ -5,7 +5,6 @@ import android.util.AttributeSet; ...@@ -5,7 +5,6 @@ import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -110,6 +109,7 @@ public class CountDownVedioView extends LinearLayout { ...@@ -110,6 +109,7 @@ public class CountDownVedioView extends LinearLayout {
*/ */
public void showRedbox() { public void showRedbox() {
if (ivCountVedioRedbox != null) { if (ivCountVedioRedbox != null) {
rope = null;
rope = YoYo.with(Techniques.Tada).duration(600).repeat(-1).playOn(ivCountVedioRedbox); rope = YoYo.with(Techniques.Tada).duration(600).repeat(-1).playOn(ivCountVedioRedbox);
} }
} }
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" android:textStyle="bold"
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
android:id="@+id/dialog_tv_title" android:id="@+id/dialog_tv_title"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="15dp"
android:layout_marginBottom="-6dp" android:layout_marginBottom="-6dp"
android:ellipsize="marquee" android:ellipsize="marquee"
android:gravity="center" android:gravity="center"
......
...@@ -56,8 +56,8 @@ ...@@ -56,8 +56,8 @@
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<include <include
layout="@layout/item_fragment_main_my_customer_service" android:id="@+id/item_customer_service"
android:visibility="gone" /> layout="@layout/item_fragment_main_my_customer_service" />
</LinearLayout> </LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
android:paddingTop="20dp" android:paddingTop="20dp"
...@@ -11,20 +12,12 @@ ...@@ -11,20 +12,12 @@
android:id="@+id/item_bottom_text" android:id="@+id/item_bottom_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="QQ群客服:点击去加群" /> android:text="官方QQ群(点击咨询):" />
<TextView <TextView
android:id="@+id/item_bottom_qqGroupNum" android:id="@+id/item_bottom_qqGroupNum"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp" />
android:text="12343324(已满)" />
<!-- <TextView-->
<!-- android:id="@+id/item_bottom_version"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="10dp"-->
<!-- android:text="v1.0.0" />-->
</LinearLayout> </LinearLayout>
\ No newline at end of file
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