Android实现底部半透明弹出框PopUpWindow效果

Android底部半透明弹出框PopUpWindow,供大家参考,具体内容如下

layout布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="#66fafafa"
 android:orientation="vertical">
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="122dp"
  android:id="@+id/ll_popupwindow"
  android:background="#ffffff"
  android:layout_alignParentBottom="true"
  android:orientation="vertical"
  >
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="26dp"
  android:orientation="horizontal">

  <TextView
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:id="@+id/popwindow_facebook"
   android:drawableTop="@mipmap/gif_more_facebook"
   android:drawablePadding="12dp"
   android:gravity="center"
   android:text="Facebook"
   android:textColor="#4d4d4d"
   android:textSize="12sp" />

  <TextView
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:id="@+id/popwindow_whatsapp"
   android:drawableTop="@mipmap/gif_more_whatsapp"
   android:drawablePadding="12dp"
   android:gravity="center"
   android:text="WhatsApp"
   android:visibility="gone"
   android:textColor="#4d4d4d"
   android:textSize="12sp" />

  <TextView
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:id="@+id/popwindow_report"
   android:drawableTop="@mipmap/gif_more_report"
   android:drawablePadding="12dp"
   android:gravity="center"
   android:text="Report"
   android:textColor="#4d4d4d"
   android:textSize="12sp" />

 </LinearLayout>

 </LinearLayout>

 </RelativeLayout>

布局示意:

代码部分:

/*
 * 在当前页面调用initPopUpWindow方法,底部弹出popUpWindow
 * 重点在popUpWindow的layout最外层布局设置android:background="#66fafafa" 半透明
 * */
 private void initPopUpWindow(View root, final String uuid, final String title){
  Log.d("click","init popopop");
  //inflate得到布局 ,底部弹出框的View
  final View popView = LayoutInflater.from(mContext).inflate(
    R.layout.layout_bottom_popwindow, null);
  View rootView = root; // 当前页面的根布局
  //创建popUpWindow对象 宽高占满页面
  final PopupWindow popupWindow = new PopupWindow(popView,
    WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
  popupWindow.setTouchable(true);
  // 设置弹出动画
  popupWindow.setAnimationStyle(R.style.anim_edit_text_popup);
  // 显示在根布局的底部
  popupWindow.showAtLocation(rootView, Gravity.BOTTOM | Gravity.LEFT, 0,
    0);
  //点击底部弹出框之外的部分让popUpWindow 消失
  popView.setOnTouchListener(new View.OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    int height = popView.findViewById(R.id.ll_popupwindow).getTop();
    int y=(int) event.getY();
    if(event.getAction()==MotionEvent.ACTION_UP){
     if(y<height){
      popupWindow.dismiss();
     }
    }
    return true;
   }
  });
  //弹出框中控件的点击事件
  TextView share_facebook= (TextView) popView.findViewById(R.id.popwindow_facebook);
  share_facebook.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    share_facebook(uuid,title);
    popupWindow.dismiss();
   }
  });

  final TextView share_whatsApp= (TextView) popView.findViewById(R.id.popwindow_whatsapp);
  boolean whatsappFound = CheckUtils.isAppInstalled(mContext, "com.whatsapp");
  if (whatsappFound) {
   share_whatsApp.setVisibility(View.VISIBLE);
   share_whatsApp.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     share_whatsapp(uuid,title);
    }
   });
  }

  TextView report= (TextView) popView.findViewById(R.id.popwindow_report);
  report.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(mContext, ReportActivity.class);

    intent.putExtra("fromch", true);

    intent.putExtra("tid", uuid);
    mContext.startActivity(intent);
    popupWindow.dismiss();<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

 <translate
  android:duration="100"
  android:fromYDelta="0.0"
  android:toYDelta="100%" />

</set>
   }  }); }

动画部分

进入时从最下方弹出到最上方

消失时从最上方向下移动直到隐藏

<style name="anim_edit_text_popup">
  <item name="android:windowEnterAnimation">@anim/popup_in</item>
  <item name="android:windowExitAnimation">@anim/popup_out</item>
</style>

popup_in:

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

 <translate
  android:duration="100"
  android:fromYDelta="100.0%"
  android:toYDelta="0.0" />

</set>

pop_out:

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

 <translate
  android:duration="100"
  android:fromYDelta="0.0"
  android:toYDelta="100%" />

</set>

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

(0)

相关推荐

  • Popup弹出框添加数据实现方法

    本文实例为大家分享了Popup弹出框添加数据的具体代码,供大家参考,具体内容如下 逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按钮,弹出新的浏览器窗口P2,在其中添加一条数据并提交后,窗口P2自动关闭 新添加数据动态添加到窗口P1中并被选中 所需知识:JS BOM 窗口对象:JS自执行函数 实现 下面在Django中简单实现下,因为比较简单,路由和视图就写在一起了. 1.路由和视图部分 from django.conf.urls import url from django.short

  • 百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome

    我们之前发布过这样的代码,其实问题不大,但这里的版本主要是增加一些功能,回调执行服务器端的方法,对于asp.net开发或ajax开发都是非常有价值的改进.先看下效果图: 原有百度的Popup.js在有 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

  • 详解angularjs popup-table 弹出框表格指令

    本文主要介绍了angularjs popup-table 弹出框表格指令,分享给大家,具体如下: //表格处理 app.directive('popupTable', ['$http', '$rootScope', '$cookies', '$location', function ($http, $rootScope, $cookies, $location) { return { restrict: 'E', templateUrl: 'popuptable_templete.html',

  • Android中自定义PopupWindow实现弹出框并带有动画效果

    使用PopupWindow来实现弹出框,并且带有动画效果 首先自定义PopupWindow public class LostPopupWindow extends PopupWindow { public Lost lost; public void onLost(Lost lost){ this.lost = lost; } private View conentView; public View getConentView() { return conentView; } public L

  • Android实现底部半透明弹出框PopUpWindow效果

    Android底部半透明弹出框PopUpWindow,供大家参考,具体内容如下 layout布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" androi

  • Android仿微信进度弹出框的实现方法

    MainActivity: package com.ruru.dialogproject; import android.app.Activity; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity implements Runnable { LoadingDialog dialog; @Override protected void onCreate(Bu

  • Android 多种简单的弹出框样式设置代码

    简介 这是一个基于AlertDialog和Dialog这两个类封装的多种弹出框样式,其中提供各种简单样式的弹出框使用说明.同时也可自定义弹出框. 项目地址:http://www.github.com/jjdxmashl/jjdxm_dialogui 特性 1.使用链式开发代码简洁明了 2.所有的弹出框样式都在DialogUIUtils这个类中完成,方便查阅方法 3.可以自定义弹出框字体样式 4.简单的类似加载框的样式可以支持两种主题更改默认白色和灰色 截图 demo下载 demo apk下载 D

  • ionic2 tabs使用 Modal底部tab弹出框

    项目要实现一个功能,在首页底部中间的tab弹出一个页面,而且是没有底部栏的,而不是像平常滑动的一个子页面. 像这样: 做法其实很简单 1.修改tabs.html中的tab,去掉[root]="tab2root"属性,就不会显示子页面了 2.添加(ionSelect)方法,点击这个tab按钮的事件,用来显示你的弹出modal 去掉之前: <ion-tab [root]="tab5Root" tabIcon="call" (ionSelect)

  • Android使用Dialog风格弹出框的Activity

    在Android中经常会遇到需要使用Dialog风格弹出框的activity,首先我们可能会首先想到的是在XML布局文件中设置android:layout_height="wrap_content"属性,让activity的高度自适应,显然这还不行,我们还需要为其DialogActivity设置自定义一个样式 <style name="dialogstyle"> <!--设置dialog的背景--> <item name="a

  • Android实现底部缓慢弹出菜单

    项目要求要做一个从底部缓慢弹出一个Button Menu 开始编码: MyselfFragment package io.dcloud.H5B79C397.fragment; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import androi

  • Android自定义弹出框dialog效果

    项目要用到弹出框,还要和苹果的样式一样(Android真是没地位),所以就自己定义了一个,不是很像(主要是没图),但是也还可以. 废话不多说了,直接上代码 1.先看布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_wi

  • 基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)

    原理很简单: 获取当前屏幕(窗体)的宽度和高度,因为不同浏览器的窗体大小是不一样的.有了这个,可以计算出来垂直居中的坐标.但是滑动了滚动条怎么依然垂直居中呢?这个时候就要获取当前窗体距离页面顶部的高度,加到刚刚的y轴坐标即可. $(document)是获取整个网页的,$(window)是获取当前窗体的,这个要搞清楚. 最后把获取的坐标赋给窗体即可,窗体本身是绝对定位的,所以自然可以到窗体中间. 具体代码: 复制代码 代码如下: <!DOCTYPE HTML> <html> <

  • JS实现侧边栏鼠标经过弹出框+缓冲效果

    可能这个标题起得不够恰当,简单来说就是:当鼠标移到最左侧时,移出一个框. 首先,我们用两个div来简单布局以下页面: <div id="box"> <div id="share">分享到</div> </div> 这个分享框的弹出原理是:把内层div定位到外层div最右侧紧贴,然后把外层div定位到屏幕左外测,left的值与宽度相等,刚好隐藏掉就可以.当鼠标经过时,再通过改变left的值使外层div显示出来. <

  • PopupWindow仿微信浮层弹出框效果

    最近公司项目需要实现类似微信的浮层弹出框.研究发现是用PopupWindow实现的.而且可以自定义位置以及出现和退出时的动画,由于太晚了就不实现动画了,需要得同学请自己研究下.由于本人新手其中的不足和缺点请见谅. 代码如下: 首先是定义顶部按钮的main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

随机推荐