SplashActivity.java启动页界面开发、首次启动时的启动页用户协议与隐私政策弹窗,只要不点击同意每次打开都会显示弹窗,同意后立即跳转到主界面,当下次再进入软件就是两秒后自动跳转到主界面。
创建SplashActivity界面
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Paint;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
@SuppressLint("CustomSplashScreen")
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isFirstStart();
}
public void isFirstStart() {
SharedPreferences preferences = getSharedPreferences("NB_FIRST_START", 0);
boolean isFirst = preferences.getBoolean("FIRST_START", true);
if (isFirst) {// 第一次
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//获取界面
View view = LayoutInflater.from(this).inflate(R.layout.dialog_privacy_show, null);
//将界面填充到AlertDiaLog容器并去除边框
builder.setView(view);
//取消点击外部消失弹窗
builder.setCancelable(false);
//创建AlertDiaLog
builder.create();
//AlertDiaLog显示
AlertDialog dialog = builder.show();
// 移除dialog的decorview背景色
dialog.getWindow().getDecorView().setBackground(null);
//初始化控件
TextView but_ok = view.findViewById(R.id.but_ok);
TextView but_return = view.findViewById(R.id.but_return);
TextView YongHu = view.findViewById(R.id.YongHu);
YongHu.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线
YongHu.getPaint().setAntiAlias(true);//抗锯齿
TextView YinSi = view.findViewById(R.id.YinSi);
YinSi.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线
YinSi.getPaint().setAntiAlias(true);//抗锯齿
//同意按钮
but_ok.setOnClickListener(view1 -> {
preferences.edit().putBoolean("FIRST_START", false).apply();
dialog.dismiss();
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
});
//取消按钮
but_return.setOnClickListener(view1 -> {
dialog.dismiss();
finish();
});
//用户协议
YongHu.setOnClickListener(view1 -> {
startActivity(new Intent(this, ProtocolActivity.class));
});
//隐私政策
YinSi.setOnClickListener(view1 -> {
startActivity(new Intent(this, PrivacyActivity.class));
});
} else {
preferences.edit().putBoolean("FIRST_START", false).apply();
Handler handler = new Handler();
handler.postDelayed(() -> {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}, 2000);
}
}
//拦截返回键事件
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
}
dialog_privacy_show.xml
更改activity_aplash.xml名字为dialog_privacy_show.xml
AndroidManifest.xml
values/themes.xml
在此themes文件中新增Splash界面的主题,添加splash.png图片,如下:
drawable/fill_stroke.xml
src/main/assets
user_agreement.html创建assets文件夹并在文件夹内创建两个文件分别是:user_agreement.html
privacy_policy.html
privacy_policy.html用户内容
1.用户内容是指该用户下载、发布或以其他方式使用本产品时产生的所有内容(例如:您的信息、图片、音乐或其他内容)。
2.您是您的用户内容唯一的责任人,您将承担因您的用户内容披露而导致的您或任何第三方被识别的风险。
3.您已同意您的用户内容受到权利限制(详见“权利限制”)修改和终止
修改
本协议容许变更。如果本协议有任何实质性变更,我们将通过电子邮件来通知您。变更通知之后,继续使用本产品则为您已知晓此类变更并同意条款约束;
我们保留在任何时候无需通知而修改、保留或关闭本产品任何服务之权利;
您已同意我们无需因修改、保留或关闭本产品任何服务之权利;
您已同意我们无需因修改、保留或关闭本产品任何服务的行为对您或第三方承担责任。赔偿
您已同意无害地使用本产品,避免因下述行为或相关行为遭受来第三方的任何投诉、诉讼、损失、损害、责任、成本和费用(包括律师费):
1.用户使用本产品的行为;
2.用户的用户内容;
3.用户违反本协议的行为。我们保留专属抗辩权和请求赔偿的权利
您已同意,除非获得我们书面同意,您不得在您与我们共同对第三方提起的诉讼中单方和解。
我们将尽合理努力将此类诉讼、诉讼行为或进程通知您。
在任何情况下,本产品都不对您或任何第三方因本协议产生的任何间接性、后果性、惩罚性的、偶然的、特殊或惩罚性的损害赔偿承担责任。访问、使用本产品所产生的损坏计算机系统或移动通讯设备数据的风险将由您个人承担。
适用法律
本协议适用中华人民共和国法律;
如果双方发生纠纷,应本着友好的原则协商解决;如协商不成,应向所在地的法院提起诉讼。独立性
本协议中的某些条款因故无法适用,则本协议的其他条款继续适用且无法适用的条款将会被修改,以便其能够依法适用。
完整性
本协议(包括隐私政策)是您和本产品之间关于本产品相关事项的最终的、完整的、排他的协议,且取代和合并之前当事人关于此类事项(包括之前的最终用户许可、服务条款和隐私政策)的讨论和协议;
某某某APP对以上条款保有最终解释权。
每部分的题目只为阅读之便而无任何法律或合同义务;
除非我们书面同意,您不得转让本协议所规定的权利义务。任何违反上述规定企图转让的行为均无效。
ProtocolActivity.java我们希望通过本《隐私政策》向您说明,在使用我们的服务时,我们如何收集、使用、储存和分享这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。
本《隐私政策》与您所使用的服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。未成年人使用服务
我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人鼓励他们的父母或监护人阅读本《隐私政策》,并建议未成年人在提交的个人信息之前寻求父母或监护人的同意和指导。
适用范围
除某些特定服务外,我们所有的服务均适用本《隐私政策》。这些特定服务将适用特定的隐私政策。针对某些特定服务的特定隐私政策,将更具体地说明我们在该等服务中如何使用您的信息。该特定服务的隐私政策构成本《隐私政策》的一部分。如相关特定服务的隐私政策与本《隐私政策》有不一致之处,适用该特定服务的隐私政策。
请您注意,本《隐私政策》不适用于以下情况:
通过我们的服务而接入的第三方服务(包括任何第三方网站)收集的信息;
通过在我们服务中进行广告服务的其他公司或机构所收集的信息。变更
我们可能适时修订本《隐私政策》的条款,该等修订构成本《隐私政策》的一部分。如该等修订造成您在本《隐私政策》下权利的实质减少。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的本《隐私政策》的约束。
更新时间:2022年7月25号
生效时间:2022年7月25号
创建ProtocolActivity界面
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.MenuItem;
import android.webkit.WebView;
import java.util.Objects;
public class ProtocolActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_protocol);
//初始化控件
initData();
}
//返回按钮的点击事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return true;
}
//初始化控件
@SuppressLint("SetTextI18n")
private void initData() {
//返回按钮
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
//设置标题栏
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
//设置Bar标题
actionBar.setTitle("用户协议");
}
WebView webview = findViewById(R.id.protocol);
webview.loadUrl("file:///android_asset/user_agreement.html");
}
}
activity_protocol.xml
PrivacyActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.MenuItem;
import android.webkit.WebView;
import java.util.Objects;
public class PrivacyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_privacy);
//初始化控件
initData();
}
//返回按钮的点击事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return true;
}
//初始化控件
@SuppressLint("SetTextI18n")
private void initData() {
//返回按钮
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
//设置标题栏
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
//设置Bar标题
actionBar.setTitle("隐私政策");
}
WebView webview = findViewById(R.id.privacy);
webview.loadUrl("file:///android_asset/privacy_policy.html");
}
}
activity_privacy.xml


![[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发 [Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发](http://www.mshxw.com/aiimages/31/1027867.png)
