android Activity实现从底部弹出或滑出选择菜单或窗口

alert_dialog.Xml代码  

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="wrap_content"
  6. android:gravity="center_horizontal"
  7. android:orientation="vertical"
  8. >
  9. <LinearLayout
  10. android:id="@+id/pop_layout"
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content"
  13. android:gravity="center_horizontal"
  14. android:orientation="vertical"
  15. android:layout_alignParentBottom="true"
  16. android:background="@drawable/btn_style_alert_dialog_background"
  17. >
  18. <Button
  19. android:id="@+id/btn_take_photo"
  20. android:layout_marginLeft="20dip"
  21. android:layout_marginRight="20dip"
  22. android:layout_marginTop="20dip"
  23. android:layout_width="fill_parent"
  24. android:layout_height="wrap_content"
  25. android:text="拍照"
  26. android:background="@drawable/btn_style_alert_dialog_button"
  27. android:textStyle="bold"
  28. />
  29. <Button
  30. android:id="@+id/btn_pick_photo"
  31. android:layout_marginLeft="20dip"
  32. android:layout_marginRight="20dip"
  33. android:layout_marginTop="5dip"
  34. android:layout_width="fill_parent"
  35. android:layout_height="wrap_content"
  36. android:text="从相册选择"
  37. android:background="@drawable/btn_style_alert_dialog_button"
  38. android:textStyle="bold"
  39. />
  40. <Button
  41. android:id="@+id/btn_cancel"
  42. android:layout_marginLeft="20dip"
  43. android:layout_marginRight="20dip"
  44. android:layout_marginTop="15dip"
  45. android:layout_marginBottom="15dip"
  46. android:layout_width="fill_parent"
  47. android:layout_height="wrap_content"
  48. android:text="取消"
  49. android:background="@drawable/btn_style_alert_dialog_cancel"
  50. android:textColor="#ffffff"
  51. android:textStyle="bold"
  52. />
  53. </LinearLayout>
  54. </RelativeLayout>

第二步:创建SelectPicPopupWindow类继承Activity类并实现OnClickListener接口(可以不用在这里实现这个借口,根据自己需要和方便实现),其他代码实现跟编写常规Activity一样就OK,如下:

Java代码  

  1. mport android.app.Activity;
  2. import android.os.Bundle;
  3. import android.view.MotionEvent;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.LinearLayout;
  8. import android.widget.Toast;
  9. public class SelectPicPopupWindow extends Activity implements OnClickListener{
  10. private Button btn_take_photo, btn_pick_photo, btn_cancel;
  11. private LinearLayout layout;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.alert_dialog);
  16. btn_take_photo = (Button) this.findViewById(R.id.btn_take_photo);
  17. btn_pick_photo = (Button) this.findViewById(R.id.btn_pick_photo);
  18. btn_cancel = (Button) this.findViewById(R.id.btn_cancel);
  19. layout=(LinearLayout)findViewById(R.id.pop_layout);
  20. //添加选择窗口范围监听可以优先获取触点,即不再执行onTouchEvent()函数,点击其他地方时执行onTouchEvent()函数销毁Activity
  21. layout.setOnClickListener(new OnClickListener() {
  22. public void onClick(View v) {
  23. // TODO Auto-generated method stub
  24. Toast.makeText(getApplicationContext(), "提示:点击窗口外部关闭窗口!",
  25. Toast.LENGTH_SHORT).show();
  26. }
  27. });
  28. //添加按钮监听
  29. btn_cancel.setOnClickListener(this);
  30. btn_pick_photo.setOnClickListener(this);
  31. btn_take_photo.setOnClickListener(this);
  32. }
  33. //实现onTouchEvent触屏函数但点击屏幕时销毁本Activity
  34. @Override
  35. public boolean onTouchEvent(MotionEvent event){
  36. finish();
  37. return true;
  38. }
  39. public void onClick(View v) {
  40. switch (v.getId()) {
  41. case R.id.btn_take_photo:
  42. break;
  43. case R.id.btn_pick_photo:
  44. break;
  45. case R.id.btn_cancel:
  46. break;
  47. default:
  48. break;
  49. }
  50. finish();
  51. }
  52. }

第三步:编写MainActivity类,这里很简单就是点击启动刚才要实现窗口的MainActivity即可:

Java代码  

  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.TextView;
  7. public class MainActivity extends Activity {
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. TextView tv = (TextView) this.findViewById(R.id.text);
  13. //把文字控件添加监听,点击弹出自定义窗口
  14. tv.setOnClickListener(new OnClickListener() {
  15. public void onClick(View v) {
  16. startActivity(new Intent(MainActivity.this,SelectPicPopupWindow.class));
  17. }
  18. });
  19. }
  20. }

第四步:这里要注意下AndroidManifest.xml对SelectPicPopupWindow的配置跟常规的不一样为该activity改添加android:theme属性,如下:

Xml代码  

  1. <activity android:name=".SelectPicPopupWindow" android:theme="@style/MyDialogStyleBottom" />

第五步:这一步是实现本实例最重要的一部就是设置android:theme属性样式以实现本例所需要的效果,如下:

Xml代码  

  1. <style name="AnimBottom" parent="@android:style/Animation">
  2. <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
  3. <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
  4. </style>
  5. <style name="MyDialogStyleBottom" parent="android:Theme.Dialog">
  6. <item name="android:windowAnimationStyle">@style/AnimBottom</item>
  7. <item name="android:windowFrame">@null</item>
  8. ;!-- 边框 -->
  9. <item name="android:windowIsFloating">true</item>
  10. ;!-- 是否浮现在activity之上 -->
  11. <item name="android:windowIsTranslucent">true</item>
  12. ;!-- 半透明 -->
  13. <item name="android:windowNoTitle">true</item>
  14. ;!-- 无标题 -->
  15. <item name="android:windowBackground">@android:color/transparent</item>
  16. ;!-- 背景透明 -->
  17. <item name="android:backgroundDimEnabled">true</item>
  18. ;!-- 模糊 -->
  19. </style>

第六步:在贴出弹出和销毁时的动画效果代码:

push_bottom_in.xml

Xml代码  

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 上下滑入式 -->
  3. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  4. <translate
  5. android:duration="200"
  6. android:fromYDelta="100%p"
  7. android:toYDelta="0"
  8. />
  9. </set>

push_buttom_out.xml

Xml代码  

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 上下滑出式 -->
  3. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  4. <translate
  5. android:duration="200"
  6. android:fromYDelta="0"
  7. android:toYDelta="50%p" />
  8. </set>

注意:这两个xml需要放在res/anim的anim文件夹下

时间: 2024-11-08 05:44:12

android Activity实现从底部弹出或滑出选择菜单或窗口的相关文章

【Android】android PopupWindow实现从底部弹出或滑出选择菜单或窗口

转载自:android PopupWindow实现从底部弹出或滑出选择菜单或窗口 Android PopupWindow的使用和分析 Popupwindow的使用 PopupWindow用法

Android Demo---实现从底部弹出窗口

在前面的博文中,小编简单的介绍了如何制作圆角的按钮以及圆角的图片,伴着键盘和手指之间的舞步,迎来新的问题,不知道小伙伴有没有这样的经历,以App为例,点击头像的时候,会从底部弹出一个窗口,有从相册中选择.拍照.取消的字样,点击相应的按钮,完成相应的操作,在小编做项目的过程中遇到类似的问题,小编经过一番捣鼓,终于搞定了ing,今天这篇博文博文,小编简单的介绍一下,如何点击头像,实现从底部弹出窗口的故事,这个故事实现的是弹出滑动窗口,主要是使用了一些设置Activity的样式来实现弹出效果和滑动效果

Android开发笔记(一百零一)滑出式菜单

可移动页面MoveActivity 滑出式菜单从界面上看,像极了一个水平滚动视图HorizontalScrollView,当然也可以使用HorizontalScrollView来实现侧滑菜单.不过今天博主要说的是利用线性布局LinearLayout来实现,而且是水平方向上的线性布局. 可是LinearLayout作为水平展示时有点逗,因为如果下面有两个子视图的宽度都是match_parent,那么LinearLayout只会显示第一个子视图,第二个子视图却是怎么拉也死活显示不了.倘若在外侧加个H

android PopupWindow实现从底部弹出或滑出选择菜单或窗口

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计.弹出效果主要使用了translate和alpha样式实现,具体实习如下: 第一步:设计弹出窗口xml: Xml代码   <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。

最近要改客户端,需要实现一个从底部弹出的popuwindow,像我这种渣渣android技术,能整出popuwindow但是整不出动画,百度之,记录一下. 从下面这个地址转的 http://blog.csdn.net/yxhuang2008/article/details/42617805 最近因为要用到PopupWindow,所以,就在网上搜索了一下,发现挺多关于这样的文章,现在我把它们整理了一下. 1.Android PopupWindow 的使用技巧,http://www.cnblogs.

Android 底部弹出提示框的解决办法(使用Activity以及PopupWindow)

本片文章主要谈探讨了如何实现在底部弹出提示框背景为半透明效果的实现.想要实现此种效果一般有两种方式一个是使用Activity设置Theme另一种方式就是使用PopupWindow设置样式实现效果. 一,使用Activity 首先是此activity的布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.andro

拍照选择图片(Activity底部弹出)

效果图如下: 第一步 : 显示出的布局文件:alert_dialog.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_hei

Android底部弹出iOS7风格对话选项框

<Android底部弹出iOS7风格对话选项框> 效果图如下: 网上流传的Android底部弹出iOS7风格的对话选项框开源代码,原作者不详.我在网上流传的代码基础上改进了一些地方,把原来作为Application发布的代码整理成一个Android的Library,如果在未来的Android项目中需要这样的对话选项框样式,则只需要下载我上次到CSDN的完整库项目(完整的Android库项目代码我已经上传到CSDN,下载地址:http://download.csdn.net/download/z

android Activity实现底部滑动弹出窗口及源码下载地址

在做微信.微博.qq等分享时,一般是点击分享按钮后会从底部弹出滑动窗口,然后选择要分享的社交平台进行分享.今日头条.腾讯新闻等内容App的评论也是从底部滑动弹出输入窗口,进行评论输入的.本篇文章就讲讲怎么通过Activity实现底部弹出滑动窗口的.实现效果是通过Animation功能实现的,效果如下: 源码下载地址 主要代码如下: 一.滑动窗口PopupShareActivity类 继承自Activity并实现了OnClickListener,方便处理Click事件.代码如下: public c