dialog 显示图片

private PopupWindow popupDialog;
/**
 * 弹出图片放大框
 *
 * @param url 图片路径
 */
public void showDialog(Context mContext, String url) {
    if (isFinishing()) {
        return;
    }
    try { //容错
        if (popupDialog != null) {
            hideDialog();
        }
        View popView = getLayoutInflater().inflate(R.layout.dialog_image, null);
        

      //glide 加载图片
        ImageView iv_dialog_image = (ImageView) popView.findViewById(R.id.iv_dialog_image);
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.placeholder(R.mipmap.image_load);

        Glide.with(mContext)
                .asBitmap()
                .load(url)
                .apply(requestOptions)
                .into(iv_dialog_image);

        popupDialog = new PopupWindow(popView, ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        popupDialog.setBackgroundDrawable(getDrawable(R.drawable.dialog_background));
        popupDialog.setOutsideTouchable(true);//外部点击消失
        //popView.setFocusableInTouchMode(true);
        popupDialog.setFocusable(true); // 这个很重要

        if (popupDialog != null && !popupDialog.isShowing()) {
            popupDialog.setAnimationStyle(R.style.dialog_anim);
            popupDialog.showAtLocation(getWindow().getDecorView(),
                    Gravity.CENTER, 0, 0);
            popupDialog.setFocusable(true);
        }
    } catch (Exception e) {
        //showAtLocation
    }
}

 

dialog_image:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#99232323"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_dialog_image"
        android:layout_width="240dp"
        android:layout_height="240dp"
        android:contentDescription="@null"
        android:scaleType="centerCrop"
        android:src="@color/color_f6"/>
</LinearLayout>

dialog_background:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="15dp"/>
    <solid android:color="@color/white"/>

</shape>
color_f6 #f6f6f6
<!-- popwidnow 显示消失动画 -->
<style name="dialog_anim">
    <item name="android:windowEnterAnimation">@anim/dialog_show</item>
    <item name="android:windowExitAnimation">@anim/dialog_hide</item>
</style>

热门文章

暂无图片
编程学习 ·

修改wordpress控制台底部版权信息

有时候给别人做的wordpress网站,不想暴露wordpress这几个字或者需要加上自己的信息。我们可以更改wordpress控制台底部的信息。具体方法:复制下面的代码:放到functions.php里面/* 设定控制台页角版权信息开始 */ function modify_footer_admin () { //底部“左侧”显示的信…
暂无图片
编程学习 ·

【Flutter 实战】简约而不简单的计算器

老孟导读:这是 【Flutter 实战】组件系列文章的最后一篇,其他组件地址:http://laomengit.com/guide/widgets/Text.html,接下来将会讲解动画系列,关注老孟,精彩不断。先看一下效果:大家学习UI编程语言时喜欢用哪个 App 当作第一个练手的项目呢?,我喜欢使用 计算器 ,可…
暂无图片
编程学习 ·

C++排雷:16. #pragma warning的几种用法

#pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。 #pragma warning(push)是保存当前的编译器警告状态;#pragma warning(push, n) 存储当前报警设置,并设置报警级别为n。n为从1到…
暂无图片
编程学习 ·

Spring Boot / Spirng Cloud 引入Rabbit MQ

注意: spring cloud版本:Greenwich.RELEASE spring boot 版本: 2.1.5.RELEASE 1.导包,在pom.xml中导入<dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId></dependency>2.加入配置文件 …
暂无图片
编程学习 ·

UGUI获取自适应UI元素的宽高

对于使用了layout的布局元素来说,并不能直接通过rectTransfrom来获取搞元素的weight和height 不过Unity中有对应API可以帮助我们获取 通过LayoutUtility中的静态方法我们可以获取对应的一些信息 GetFlexibleHeight 返回布局元素的灵活高度。GetFlexibleSize 返回布局元素的灵活…
暂无图片
编程学习 ·

那些不常见,但却非常实用的 css 属性

作者:寒水寺一禅https://segmentfault.com/a/11900000228515431、-webkit-line-clamp可以把 块容器 中的内容限制为指定的行数。并且在超过行数后,在最后一行显示"..."这是正常的展示display: -webkit-box; /*值必须为-webkit-box或者-webkit-inline-box*/ -webkit…
暂无图片
编程学习 ·

SwiftUI 2020年WWDC演示示例

整体效果代码实现 文件目录SandwichesApp.swift import SwiftUI@main struct SandwichesApp: App {// 定义一个私有的状态对象 store@StateObject private var store = SandwichStore()var body: some Scene {WindowGroup {// 将store传递给列表页ContentView(store: store)}} …
暂无图片
编程学习 ·

Java实现文件浏览器下载

前言:先说下需求,项目需求是用户一点击一个前端页面的链接就可以下载一个压缩包.因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载. 废话不多说,直接上代码! 1…
暂无图片
编程学习 ·

『互联网架构』软件架构-mysql主从(二)

通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。源码:https://…
暂无图片
编程学习 ·

vue框架:变更页面background背景颜色 - 代码篇

vue框架:变更body,html页面background背景颜色场景bug介绍: vue页面切换,导致后面的页面背景颜色被上一个页面背景色覆盖,如何避免这个问题。 Method 1. 修改 style为 style scoped Method 2. 按下面的设置教程执行。1. 修改 样式:渲染前 执行 beforeCreate () {documen…
暂无图片
编程学习 ·

2020A证(安全员)模拟考试题库及A证(安全员)考试软件

题库来源:安全生产模拟考试一点通公众号小程序2020A证(安全员)模拟考试题库及A证(安全员)考试软件,包含A证(安全员)模拟考试题库答案解析及A证(安全员)考试软件练习。由安全生产模拟考试一点通公众号结合国家A证(安全员)考试最新大纲及A证(安全员)考试真题出具,有助于A证(安…
暂无图片
编程学习 ·

【C数据结构】简单顺序队列代码

#include<stdio.h> #include<stdlib.h>#define MAXLEN 10 typedef int datatype; typedef struct{datatype data[MAXLEN];int front;//头int rear;//尾 }SeqQueue; /* 队头front+1是头元素下标,队尾rear是尾元素下标 */ void InitQueue(SeqQueue *&Q); int …
暂无图片
编程学习 ·

高并发的一些解决启发

1、尽量使用缓存技术来做。用户缓存,页面缓存等一切缓存,使用特定的机制进行刷新。利用消耗内存空间来换取用户的效率,同时减少数据库的访问次数。2、把数据库的查询语句进行优化,一般复杂的SQL语句就不要使用ORM框架自带的做法来写,采用自己来写SQL,例如hibernate的hql中…
暂无图片
编程学习 ·

为什么要搭建一套直播带货商城源码

直播带货已经是大家非常熟悉的营销策略了,直播带货平台亦如雨后春笋般的出现在大家的眼前,也有越来越多的软件开发者投入对直播带货平台的研究中来,直播带货商城源码也成为了炙手可热的产品销往各个厂家,那么搭建一套属于自己的直播带货商城源码有什么意义呢?怎么实现自己…
暂无图片
编程学习 ·

SpringBoot框架使用

—— 本文转自onestar : SpringBoot框架原理分析 一、起步依赖原理分析 在搭建SpringBoot环境的时候,在pom.xml中添加了两个依赖,对这两个依赖进行分析,分别是: SpringBoot的起步依赖:spring-boot-starter-parent web的起步依赖:spring-boot-starter-web 1、spring-bo…
暂无图片
编程学习 ·

CPU缓存与JMM

cpu内存架构主内存(RAM):主内存为内存条,在CPU中线程执行完,有数据写入或者修改则先到主内存中,之后再存入磁盘。 系统主线:链接系统CPU和主内存的系统主线,例如电脑主板上链接CPU和内存条的主线。 上图为简单的高速缓存配置,数据的读取和存储都经多高速缓存,CPU核心与…
暂无图片
编程学习 ·

BMS 显着性检测:布尔映射方法

摘要 提出了一种基于布尔映射的显着性模型。 图像的特征在于一组二进制图像,这些二进制图像是通过随机阈值图像的颜色通道而生成的。 BMS根据图形地面隔离的格式塔原理,通过分析布尔图的拓扑结构来计算显着图。 BMS易于实施且运行高效。 尽管具有简单性,但与五个眼动追踪数…
暂无图片
编程学习 ·

工具集电子书等4G资料免费分享(IT 信安菜鸟入门必备)

内容涵盖:区块链 go语言 逆向 代码审计 云计算深度学习 等保2.0相关文档、0day扫描器、日志查看工具、Googlehacking技术手册、各种工具合集以及信息安全行业大会PPT等等。 1、工具集及教程: #安全工具# 【汇总篇】工具及教程分享链接: 链接:https://pan.baidu.com/s/1uzVqks…
暂无图片
编程学习 ·

pymetasploit3:ValueError: int is not allowed for map key

问题截图:版本: pip install pymetasploit3 安装,版本为1.0.2 自带安装依赖了库msgpack1.0.0 问题: 安装的msgpack1.0.0版本有重大改变 解决方法: 1.修改代码(亲测) Python\Python36\Lib\site-packages\pymetasploit3\utils.py def decode(data):return msgpack.unpack…