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:实现效果如下: