当前位置: 移动技术网 > 移动技术>移动开发>Android > Android自定义Dialog内部透明、外部遮罩效果

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

2019年08月01日  | 移动技术网移动技术  | 我要评论

本文实例为大家分享了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>

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网