Android用户协议与隐私政策实现(完整版)

1、概述

哈喽,我是鑫鑫,这也是我第一次写博客。

原理也很简单

首先

让程序检测你是不是第一次使用app,
如果是则在activity_main.xml中显示dialog(也就是MainActivity.java中的dialog_privacy_show.xml

,并实现程序的跳转至主程序SecondActivity.xml

对应的SecondActivity.java代码点我传送

如果是第二次启动,则不弹窗,直接进入主程序SecondActivity.xml

所需的资源文件点我跳转

2、代码

新创建一个

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="match_parent"
	android:layout_width="match_parent"
	android:orientation="vertical"
	android:gravity="center">

	<TextView
		android:layout_height="wrap_content"
		android:textAppearance="?android:attr/textAppearanceLarge"
		android:layout_width="wrap_content"
		android:text="这里可以自己填充一下"/>

</LinearLayout>

以下是activity_main对应的Java代码

MainActivity.java
package com.mycompany.myapp;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.mycompany.myapp.R;

public class MainActivity extends Activity {

    SharedPreferences sharedPreferences;
    AlertDialog dialog;

    private SharedPreferences.Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        getActionBar().hide();
        
        
        date();
   
           
        
        
  }
    
 
    private void date() {
        SharedPreferences shared= getSharedPreferences("is", MODE_PRIVATE);
        boolean isfer=shared.getBoolean("isfer", true);
        editor = shared.edit();
        if(isfer){
            //第一次进入跳转
            showDialog();
        }else{
            //第二次
            Intent ok = new Intent(MainActivity.this,SecondActivity.class);
            startActivity(ok);
            finish();
        }
    }
    
    private void showDialog() {

    
            AlertDialog.Builder builder= new AlertDialog.Builder(this);
            //获取界面
            View view= LayoutInflater.from(this).inflate(R.layout.dialog_privacy_show, null);
            //将界面填充到AlertDiaLog容器并去除边框
            builder.setView(view);
             //初始化控件
        TextView but_ok= view.findViewById(R.id.but_ok);
        TextView but_return= view.findViewById(R.id.but_return);
        
        TextView YinSi= view.findViewById(R.id.YinSi);
        TextView YongHu= view.findViewById(R.id.YongHu);
            //取消点击外部消失弹窗
            builder.setCancelable(false);
            //创建AlertDiaLog
            builder.create();
            //AlertDiaLog显示
            final AlertDialog dialog= builder.show();
            //设置AlertDiaLog宽高属性
//        WindowManager.LayoutParams params = Objects.requireNonNull(customAlert.getWindow()).getAttributes();
//        params.width = 200;
//        params.height = 200 ;
//        dialog.getWindow().setAttributes(params);
            // 移除dialog的decorview背景色
            dialog.getWindow().getDecorView().setBackground(null);
            //设置自定义界面的点击事件逻辑
        
        
        
            
            but_ok.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                       Intent ok = new Intent(MainActivity.this,SecondActivity.class);
                       startActivity(ok);
                       finish();
                        editor.putBoolean("isfer", false);
                        editor.commit();
                    }
                });
                
            but_return.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        finish();
                    }
                });
             
                
                
                
                
        YinSi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent=new Intent(MainActivity.this,YinSi.class); 
					startActivity(intent); 
                }
            });

        YongHu.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent=new Intent(MainActivity.this,YongHu.class); 
					startActivity(intent); 
                }
            });
        }
        
        

   }

SecondActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	android:gravity="center">

	<TextView
		android:layout_height="wrap_content"
		android:textAppearance="?android:attr/textAppearanceLarge"
		android:layout_width="wrap_content"
		android:text="Welcome"/>

</LinearLayout>

Second_Activity.java
package com.mycompany.myapp;
import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.SecondActivity);
    }

    //里面的功能自己填充
}
dialog_privacy_show.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:orientation="vertical"
	android:background="@drawable/fill_stroke">

	<LinearLayout
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:orientation="horizontal">

		<ImageView
			android:layout_width="38dp"
			android:layout_height="38dp"
			android:layout_marginLeft="10dp"
			android:layout_marginRight="10dp"
			android:layout_marginTop="10dp"
			android:src="@drawable/ic_message_alert"/>

		<TextView
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:textSize="22sp"
			android:textColor="#FF009688"
			android:textStyle="bold"
			android:layout_gravity="center|bottom"
			android:text="消息"/>

	</LinearLayout>

	<TextView
		android:id="@+id/text"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:paddingTop="20dp"
		android:paddingBottom="20dp"
		android:textColor="#5C5C5C"
		android:textSize="20sp"
		android:layout_marginLeft="15dp"
		android:layout_marginRight="15dp"
		android:text="我们极其重视用户协议和隐私协议,                                             请你仔细浏览下两份协议,                                             本协议在--这里可以填App名称--因为你之间产生法律效力,                                             意味着您完全同意并接受协议的全部条款。"/>

	<LinearLayout
		android:layout_height="wrap_content"
		android:layout_width="match_parent"
		android:gravity="center">

		<TextView
			android:layout_height="wrap_content"
			android:textAppearance="?android:attr/textAppearanceMedium"
			android:layout_width="wrap_content"
			android:id="@+id/YinSi"
			android:text="用户协议"/>

		<View
			android:layout_height="match_parent"
			android:layout_width="30dp"/>

		<TextView
			android:layout_height="wrap_content"
			android:textAppearance="?android:attr/textAppearanceMedium"
			android:layout_width="wrap_content"
			android:id="@+id/YongHu"
			android:text="隐私协议"/>

	</LinearLayout>

	<LinearLayout
		android:layout_width="match_parent"
		android:layout_height="1dp"
		android:background="#eee"/>

	<LinearLayout
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:orientation="horizontal">

		<TextView
			android:id="@+id/but_return"
			android:layout_width="0dp"
			android:layout_height="wrap_content"
			android:layout_weight="1"
			android:textSize="16sp"
			android:gravity="center"
			android:textColor="#999"
			android:paddingTop="15dp"
			android:paddingBottom="15dp"
			android:text="取消"/>

		<LinearLayout
			android:layout_width="1dp"
			android:layout_height="match_parent"
			android:background="#eee"/>

		<TextView
			android:id="@+id/but_ok"
			android:layout_width="0dp"
			android:layout_height="wrap_content"
			android:layout_weight="1"
			android:textSize="16sp"
			android:gravity="center"
			android:paddingTop="15dp"
			android:paddingBottom="15dp"
			android:textColor="#FF009688"
		    android:textStyle="bold"
            android:text="确定"/>

	</LinearLayout>

</LinearLayout>

***以下的所有资源在drawable文件中创建***

fill_stroke.xml

对应dialog_privacy_show.xml代码
蓝色位置即是指定资源文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!--描边设置-->
    <stroke android:color="@android:color/darker_gray"
        android:width="1px" />

    <!--填充设置-->
    <solid android:color="@android:color/white"/>

    <!--圆角设置-->
    <corners android:radius="15dp"/>

</shape>

ic_message_alert.xml

对应dialog_privacy_show.xml代码位蓝色位置一是指定代码

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24"
    android:viewportWidth="24">
    <path
        android:fillColor="#FF009688"
        android:pathData="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0,0 0,2 4V22L6,18H20A2,2 0,0 0,22 16V4C22,2.89 21.1,2 20,2Z"/>

</vector>

以上就是全部的代码了,如果有什么bug反馈

以下是效果图

在这里插入图片描述

鑫鑫工具箱是我另外一个demo
现已更新至6.1版本
感兴趣的可以下载一下:https://share.weiyun.com/4fK4CUIX

我的邮箱:1402832033@qq.com有bug可以反馈。

我是鑫鑫,再见了。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值