android studio实例_android APP隐私政策弹框的实现代码实例

android APP隐私政策弹框的实现代码实例

步骤一:在assets目录下放置隐私政策的文本文件,比如privacy.txt

步骤二:在drawable目录下放置圆角弹出框演示:

<?xml version="1.0" encoding="utf-8"?>

步骤三:在layout下放置弹出框的布局文件:

<?xml version="1.0" encoding="utf-8"?>                    

步骤五:放置一个主页面,测试用:

步骤六:代码实现如下:

import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;import android.app.Dialog;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;public class MainActivity extends AppCompatActivity {    Dialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void onClickAgree(View v)    {        dialog.dismiss();    }    public void onClickDisagree(View v)    {        finish();    }    public void onClickPrivacy(View v)    {        showPrivacy("privacy.txt");//放在assets目录下的隐私政策文本文件    }    public void showPrivacy(String privacyFileName)    {        String str = initAssets(privacyFileName);        final View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_privacy_show, null);        TextView tv_title = (TextView) inflate.findViewById(R.id.tv_title);        tv_title.setText("个人信息保护指引");        TextView tv_content = (TextView) inflate.findViewById(R.id.tv_content);        tv_content.setText(str);        dialog = new AlertDialog                .Builder(MainActivity.this)                .setView(inflate)                .show();        // 通过WindowManager获取        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();        params.width = dm.widthPixels*4/5;        params.height = dm.heightPixels*1/2;        dialog.getWindow().setAttributes(params);        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);    }    /**     * 从assets下的txt文件中读取数据     */    public String initAssets(String fileName) {        String str = null;        try {            InputStream inputStream = getAssets().open(fileName);            str = getString(inputStream);        } catch (IOException e1) {            e1.printStackTrace();        }        return str;    }    public static String getString(InputStream inputStream) {        InputStreamReader inputStreamReader = null;        try {            inputStreamReader = new InputStreamReader(inputStream, "UTF-8");        } catch (UnsupportedEncodingException e1) {            e1.printStackTrace();        }        BufferedReader reader = new BufferedReader(inputStreamReader);        StringBuffer sb = new StringBuffer("");        String line;        try {            while ((line = reader.readLine()) != null) {                sb.append(line);                sb.append("");            }        } catch (IOException e) {            e.printStackTrace();        }        return sb.toString();    }}

步骤7:实现效果如下:

394f70af2fa71ac0eaedfac1dc6352e5.png
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值