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);
    }

}
目录
相关文章
|
3月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
171 11
|
2月前
|
机器学习/深度学习 Android开发 数据安全/隐私保护
手机脚本录制器, 脚本录制器安卓,识图识色屏幕点击器【autojs】
完整的UI界面,包含录制控制按钮和状态显示 屏幕点击动作录制功能,记录点击坐标和时间间隔
|
5月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
228 3
Android利用selector(选择器)实现图片动态点击效果
|
6月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
12月前
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
257 4
Android开发表情emoji功能开发
|
12月前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
365 3
|
12月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
180 2
|
Android开发 UED Kotlin
Android中如何跳转到Wi-Fi开关设置页
本文介绍如何在Android应用开发中使用隐式Intent引导用户至特定系统设置页面,如Wi-Fi设置页,并提供Kotlin代码示例。通过设置Intent的Action属性并检查设备兼容性,可轻松实现跳转功能,提升用户体验。此外,还列举了其他常用设置页面的Intent Action及注意事项。
260 15
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
1388 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
存储 安全 物联网
Android经典实战之跳转到系统设置页面或其他系统应用页面大全
本文首发于公众号“AntDream”,关注获取更多技巧。文章总结了Android开发中跳转至系统设置页面的方法,包括设备信息、Wi-Fi、显示与声音设置等,并涉及应用详情与电池优化页面。通过简单的Intent动作即可实现,需注意权限与版本兼容性。每日进步,尽在“AntDream”。
1240 2

热门文章

最新文章