Android实现点击链接跳转功能

简介: Android实现点击链接跳转功能

实现效果图

点击用户协议到人工智能教程

点击隐私条款是到阿超的博客主页

(测试用例)

代码实现

activity_login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoginActivity"
    android:gravity="center"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:background="@drawable/head_bg"
        android:orientation="vertical">
        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.8"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:gravity="center"
            android:layout_weight="1.5"
            android:orientation="vertical">

            <ImageView
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:layout_gravity="center"
                android:src="@drawable/head_photo"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/app_name"
                android:textStyle="bold"
                android:textSize="23sp" />
        </LinearLayout>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.6"
        android:orientation="vertical">
        <FrameLayout
            android:id="@+id/login_fl"
            android:layout_width="300dp"
            android:layout_height="68dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:background="@drawable/login_button_bg">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="登录"
                android:textColor="#333333"
                android:textSize="18sp"
                android:clickable="false"/>
        </FrameLayout>

    </LinearLayout>
    <TextView
        android:id="@+id/loginPageTextView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"/>
</LinearLayout>

LoginActivity.java

package top.gjc;

public class LoginActivityextends BaseActivity {

    private TextView loginPageTextView; //文本框
    private Context myContext = LoginActivity.this;

    @Override
    protected int getResId() {
        return R.layout.activity_login;
    }

    @Override
    protected void initView() {
        loginPageTextView= findViewById(R.id.loginPageTextView);

        findViewById(R.id.login_fl).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              //登录操作
            }
        });
    }

    @SuppressLint("ResourceAsColor") //忽略警告
    @Override
    protected void initData() {
        String string = "是阿超是阿超是阿超\n登录即代表您同意我们的";
        String str = "《用户\n协议》";
        String s = "《隐私条款》";
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(string);
        SpannableString spannableStr = new SpannableString(str);
        SpannableString spannableS = new SpannableString(s);

        spannableStr.setSpan(new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
              // 点击用户协议(uri为跳转链接)
                Uri uri = Uri.parse("https://www.captainai.net/gjc");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }

            // 重写显示状态
            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                ds.setColor(Color.parseColor("#6C6FFF"));
                ds.setUnderlineText(true);
            }
        }, 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        spannableS.setSpan(new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
              // 点击隐私条款(uri为跳转链接)
                Uri uri = Uri.parse("https://blog.csdn.net/Mr_Gaojinchao");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                ds.setColor(Color.parseColor("#6C6FFF"));
                ds.setUnderlineText(true);
            }
        }, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        spannableStringBuilder.append(spannableStr);
        spannableStringBuilder.append(" 和 ");
        spannableStringBuilder.append(spannableS);

        // 设置链接点击事件
        loginPageTextView.setMovementMethod(LinkMovementMethod.getInstance());
        // 设置点击文本时背景为透明状态(默认情况点击文本时 文本背景为淡蓝色)
        loginPageTextView.setHighlightColor(android.R.color.transparent);
        loginPageTextView.setText(spannableStringBuilder);
    }

}
目录
相关文章
|
1月前
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
68 4
Android开发表情emoji功能开发
|
22天前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
28 2
|
23天前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
44 3
|
2月前
|
Android开发 UED Kotlin
Android中如何跳转到Wi-Fi开关设置页
本文介绍如何在Android应用开发中使用隐式Intent引导用户至特定系统设置页面,如Wi-Fi设置页,并提供Kotlin代码示例。通过设置Intent的Action属性并检查设备兼容性,可轻松实现跳转功能,提升用户体验。此外,还列举了其他常用设置页面的Intent Action及注意事项。
78 15
|
3月前
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
310 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
2月前
|
Android开发 开发者
Android平台无纸化同屏如何实现实时录像功能
Android平台无纸化同屏,如果需要本地录像的话,实现难度不大,只要复用之前开发的录像模块的就可以,对我们来说,同屏采集这块,只是数据源不同而已,如果是自采集的其他数据,我们一样可以编码录像。
|
3月前
|
存储 安全 物联网
Android经典实战之跳转到系统设置页面或其他系统应用页面大全
本文首发于公众号“AntDream”,关注获取更多技巧。文章总结了Android开发中跳转至系统设置页面的方法,包括设备信息、Wi-Fi、显示与声音设置等,并涉及应用详情与电池优化页面。通过简单的Intent动作即可实现,需注意权限与版本兼容性。每日进步,尽在“AntDream”。
398 2
|
3月前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
3月前
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
41 0
|
3月前
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
59 0