来自:http://android.tgbus.com/Android/tutorial/201106/357509.shtml


Android开发窗口实现半透明效果_第1张图片

  弹出popwindow的代码如下,比较乱,多包涵:

  popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT,
   LayoutParams.FILL_PARENT, true);
   popupWindow.showAtLocation(findViewById(R.id.parent), Gravity.CENTER
   | Gravity.CENTER, 0, 0);
   popupWindow.setAnimationStyle(R.style.PopupAnimation);
   // 加上下面两行可以用back键关闭popupwindow,否则必须调用dismiss();
   ColorDrawable dw = new ColorDrawable(-00000);
   popupWindow.setBackgroundDrawable(dw);
   popupWindow.update();

  下面是实现步骤:
  1.背景置灰:
  popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT, true);
  第二三个参数必须是LayoutParams.FILL_PARENT,这样才能填充整个屏幕,达到背景置灰的目的。
  整个popupwindow里面是一个GridView,图片什么的也是用的那个仿UC浏览器界面项目的,在此谢谢了。
  关键的东西都在xml里面。

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="fill_parent"
   android:gravity="center" android:layout_height="fill_parent"
   android:layout_gravity="center" android:background="#b0000000" >
   <LinearLayout android:orientation="vertical"
   android:layout_width="wrap_content" android:gravity="center"
   android:layout_height="wrap_content" android:layout_gravity="center"
   android:background="@drawable/downbutton_corner">
   <GridView android:id="@+id/gridview" android:layout_width="wrap_content"
   android:layout_height="wrap_content" android:numColumns="4"
   android:verticalSpacing="5dip" android:horizontalSpacing="5dip"
   android:stretchMode="columnWidth" android:gravity="center"
   android:layout_gravity="center" />
    </LinearLayout>
  </LinearLayout>

  第一个linearlayout里面的android:background="#b0000000",就是全屏背景,网上搜的好多半透明都是“#e0000000”,我觉得那颜色太深,“#b0000000”更合适。
  第二个linearlayout是popupwind的背景,里面的android:background="@drawable/downbutton_corner"是关键,边框,圆角都是里面定义的。

  2.popupwindow的边框,圆角背景。downbutton_corne.xmlpopupwindow的边框,圆角背景。

  <shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
   <gradient android:startColor="#c0000000" android:endColor="#c0000000"
   android:angle="90" /><!--背景颜色渐变 -->
   <stroke android:dashWidth="2dp" android:dashGap="2dp"
   android:width="2dp" android:color="#FF00ff00"></stroke>
   <!--描边 -->
   <corners android:bottomRightRadius="5dp"
   android:bottomLeftRadius="5dp" android:topLeftRadius="5dp"
   android:topRightRadius="5dp" /><!--设置圆角-->
  </shape>

  <gradient android:startColor="#c0000000" android:endColor="#c0000000" android:angle="90" /><!--背景颜色渐变 -->
  我就设置了一个固定的颜色"#c0000000"。android:angle="90"这个是设置颜色渐变方向,从上到下啊,从左到右啊,貌似只能90的倍数,也只有四个方向嘛。
  <stroke ></stroke>,边框就是这个实现的。
  dashWidth指的是边线的宽度 dashGap 指的是每条线之间的间距,(因为是边线是很多小横线组成的)。

  3.淡入淡出动画
  popupWindow.setAnimationStyle(R.style.PopupAnimation);
  这条代码是设置style的,动画文件就是在style文件里面引入的。下面是淡入的动画,动画教程网上也很多。淡出的动画就这些参数值交换位置就是了。android:duration这个是持续时间,为了截图,我把它弄成5秒了。

  <set xmlns:android="http://schemas.android.com/apk/res/android">
   <scale android:fromXScale="0.6" android:toXScale="1.0"
   android:fromYScale="0.6" android:toYScale="1.0" android:pivotX="50%"
   android:pivotY="50%" android:duration="5000" />
   <alpha android:interpolator="@android:anim/decelerate_interpolator"
   android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="5000" />
  </set>

  还有一个关键的问题。弹出pop之后,back键无效了,必须在pop里面设置事件dismiss掉。


更多相关文章

  1. Android水平进度条颜色和样式
  2. android中实现背景图片颜色渐变方法
  3. android PopupWindow 阴影背景 、动画 、点击显示、隐藏
  4. Android常用颜色大全
  5. Android常用布局颜色值大全
  6. android 常用颜色表
  7. Android TextView带背景图片和自定义边框

随机推荐

  1. golang中的int占几个字节
  2. golang中的bee是指什么
  3. golang反射重要吗
  4. golang查找文件是否存在的方法
  5. golang读锁有什么用
  6. 关于golang中的错误处理机制的详细介绍
  7. golang的优势是什么
  8. 详解golang中的不定参数
  9. golang常量和变量的区别
  10. golang中“=”与“:=”的区别