欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义Dialog内部透明、外部遮罩效果

程序员文章站 2023-09-04 14:35:56
本文实例为大家分享了android自定义dialog遮罩效果的具体代码,供大家参考,具体内容如下 图例: 代码 1、自定义dialog:引入样式和代码指定样式...

本文实例为大家分享了android自定义dialog遮罩效果的具体代码,供大家参考,具体内容如下

图例:

Android自定义Dialog内部透明、外部遮罩效果

代码

1、自定义dialog:引入样式和代码指定样式

package com.gxjl.pe.gxjlpesdk.view;
 
import android.app.dialog;
import android.content.context;
import android.os.bundle;
import android.support.annotation.nonnull;
import android.support.annotation.nullable;
import android.util.displaymetrics;
import android.view.gravity;
import android.view.view;
import android.view.window;
import android.view.windowmanager;
import android.widget.textview;
 
import com.gxjl.pe.gxjlpesdk.r;
 
/**
 * 相机、相册选择 弹框
 * created by xiaoshuai on 2018/8/20.
 */
 
public abstract class cameraphotodialog extends dialog implements view.onclicklistener{
 private context context;
 
 public cameraphotodialog(@nonnull context context) {
  super(context, r.style.dialogtransparent);//内容样式在这里引入
 
  this.context = context;
 }
 
 public cameraphotodialog(@nonnull context context, int themeresid) {
  super(context, themeresid);
 }
 
 protected cameraphotodialog(@nonnull context context, boolean cancelable, @nullable oncancellistener cancellistener) {
  super(context, cancelable, cancellistener);
 }
 
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
 
  setcontentview(r.layout.dialog_camrea_photo);
 
 //tv_title = findviewbyid(r.id.tv_title);
 
  window dialogwindow = getwindow();
  windowmanager.layoutparams lp = dialogwindow.getattributes();
  displaymetrics d = context.getresources().getdisplaymetrics(); // 获取屏幕宽、高用
  lp.width = (int) (d.widthpixels * 0.9); // 宽度设置为屏幕宽度的80%
  //lp.dimamount=0.0f;//外围遮罩透明度0.0f-1.0f
  dialogwindow.setattributes(lp);
  dialogwindow.setgravity(gravity.bottom);//内围区域底部显示
 
 }
 
 @override
 public void onclick(view view) {
  int i = view.getid();
  if (i == r.id.tv_cancel) {
   this.dismiss();
  }
 }
 
 protected abstract void confirm();
}

2、dialog_camrea_photo.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="wrap_content"
 android:background="@android:color/transparent"
 android:orientation="vertical">
 
 <linearlayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginbottom="10dp"
  android:background="@android:color/transparent"
  android:orientation="vertical">
 
  <linearlayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="@drawable/bg_camera_check"
   android:orientation="vertical">
 
   <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="15dp"
    android:layout_gravity="center_horizontal"
    android:text="拍照"
    android:textsize="16sp"
    android:textcolor="@color/font_007aff"/>
 
   <view
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/line_ececed"/>
 
   <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="15dp"
    android:layout_gravity="center_horizontal"
    android:text="照片图库"
    android:textsize="16sp"
    android:textcolor="@color/font_007aff"/>
  </linearlayout>
 
  <linearlayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margintop="10dp"
   android:background="@drawable/bg_camera_check"
   android:orientation="vertical">
 
   <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="15dp"
    android:layout_gravity="center_horizontal"
    android:text="拍照"
    android:textsize="16sp"
    android:textcolor="@color/font_007aff"/>
  </linearlayout>
 </linearlayout>
</linearlayout>

3、style.xml 样式布局:指定dialog内容样式

<?xml version="1.0" encoding="utf-8"?>
<resources>
 
 <style name="dialogtransparent" parent="@android:style/theme.dialog">
  <item name="android:windowframe">@null</item> <!--边框-->
  <item name="android:windowisfloating">true</item> <!--是否浮现在activity之上-->
  <item name="android:windowistranslucent">true</item> <!--半透明-->
  <item name="android:windownotitle">true</item> <!--无标题-->
  <item name="android:background">@android:color/transparent</item> <!--背景透明-->
  <item name="android:windowbackground">@android:color/transparent</item> <!--背景透明-->
  <item name="android:backgrounddimenabled">true</item> <!--模糊-->
  <item name="android:backgrounddimamount">0.6</item> <!--背景透明度-->
 </style>
</resources>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。