根据最新规定,第一次打开app需要弹出提示。
![](https://img.haomeiwen.com/i19542407/0c768805a248e33f.png)
首先布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="280dp"
android:paddingBottom="15dp"
android:orientation="vertical"
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="18sp"
android:layout_marginTop="6dp"
android:textColor="@color/color_333333"
android:text="温馨提示"
android:textStyle="bold"
android:id="@+id/title"/>
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_gravity="center_horizontal"
android:textSize="14sp"
android:layout_marginTop="15dp"
android:textColor="@color/color_333333"
android:text="1. 200积分起用。"
android:id="@+id/text_counter"/>
<!--<TextView
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@color/color_efefef" />-->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="10dp"
>
<RelativeLayout android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<com.yijiago.ecstore.widget.StateButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/refuse"
android:text="拒绝"
android:minHeight="0dp"
android:paddingTop="@dimen/dp_6"
android:paddingBottom="@dimen/dp_6"
android:paddingLeft="26dp"
android:paddingRight="26dp"
android:stateListAnimator="@null"
android:textSize="@dimen/sp_16"
app:animationDuration="100"
app:normalBackgroundColor="#e0e0e0"
app:normalTextColor="@color/color_black"
app:pressedBackgroundColor="@color/color_b1b1b1"
app:pressedTextColor="@color/color_white"
app:radius="@dimen/dp_28"
app:unableBackgroundColor="@color/color_666666"
app:unableTextColor="@color/color_white"
/>
</RelativeLayout>
<RelativeLayout android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<com.yijiago.ecstore.widget.StateButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/agree"
android:text="同意"
android:minHeight="0dp"
android:paddingTop="@dimen/dp_6"
android:paddingBottom="@dimen/dp_6"
android:paddingLeft="26dp"
android:paddingRight="26dp"
android:stateListAnimator="@null"
android:textSize="@dimen/sp_16"
app:animationDuration="100"
app:normalBackgroundColor="#ff4050"
app:normalTextColor="@color/color_white"
app:pressedBackgroundColor="@color/color_b1b1b1"
app:pressedTextColor="@color/color_white"
app:radius="@dimen/dp_28"
app:unableBackgroundColor="@color/color_666666"
app:unableTextColor="@color/color_white"
/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
text_counter里面设置弹框内容。
在assets文件夹里创建一个protocol.txt文件:
尊敬的会员,感谢您对xxx一直以来的信任!<br />
我们依据相关的法律制定了<a href= "https://baidu.com/agreement.html">《用户协议》
</a>和<a href="https://baidu.com/agreement.html">《隐私政策》</a ></font>,
请您在点击同意之前仔细阅读并充分 理解相关条款,其中的重点条款已为您标注,方便您了解自己的权利。<br />
我们将通过《隐私政策》向您说明:<br />
1.为了您可以更好的享受周边商户提供的服务, 我们会根据您的授权内容,收集和使用对应的 必要信息(例如您的联系电话、位置信息、收货地址等)。<br />
2.您可以对上述信息进行访问、更正、删除及 注销账户。<br />
3.未经您的授权同意,我们不会将上述信息共 享给第三方或用于您未售券的其他用途。<br />
需要监听链接点击事件,以及去掉下划线:
textCounter = view.findViewById(R.id.text_counter);
textCounter.setText(getClickableHtml(geFileFromAssetsForAS(mContext, "protocol.txt")));
//这一句很重要,否则ClickableSpan内的onClick方法将无法触发!!
textCounter.setMovementMethod(LinkMovementMethod.getInstance());
public static String geFileFromAssetsForAS(Context context, String fileName) {
if (context == null || TextUtils.isEmpty(fileName)) {
return null;
}
StringBuilder s = new StringBuilder("");
try {
InputStreamReader in = new InputStreamReader(context.getClass().getClassLoader().getResourceAsStream("assets/"+fileName));
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null) {
s.append(line);
}
return s.toString();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 格式化超链接文本内容并设置点击处理
* */
private CharSequence getClickableHtml(String html) {
Spanned spannedHtml = Html.fromHtml(html);
SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
for(final URLSpan span : urls) {
setLinkClickable(clickableHtmlBuilder, span);
}
return clickableHtmlBuilder;
}
/**
* 设置点击超链接对应的处理内容
* */
private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,final URLSpan urlSpan) {
int start = clickableHtmlBuilder.getSpanStart(urlSpan);
int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
//链接去掉下划线
ds.setUnderlineText(false);
}
@Override
public void onClick(View view) {
AppWebFragment.open(getContext(), urlSpan.getURL());
}
};
clickableHtmlBuilder.removeSpan(urlSpan);//解决方法
clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
}
注意:ds.setUnderlineText(false);要放在super.updateDrawState(ds);下面,否则无效。
setSpan前,要加上clickableHtmlBuilder.removeSpan(urlSpan);
参考资料:
https://www.jianshu.com/p/075c539f9feb
https://www.jianshu.com/p/870619211d77
https://www.jianshu.com/p/0c13d74351f6?t=1491463081507
https://blog.csdn.net/a641832648/article/details/50460898
网友评论