Android使用Activity实现从底部d出菜单或窗口的方法

Android使用Activity实现从底部d出菜单或窗口的方法,第1张

概述本文实例讲述了Android使用Activity实现从底部d出菜单或窗口的方法。分享给大家供大家参考,具体如下:

本文实例讲述了AndroID使用Activity实现从底部d出菜单或窗口的方法。分享给大家供大家参考,具体如下:

这里使用activity实现d出滑动窗口或菜单,主要是使用了一些设置activity的样式来实现d出窗口和滑动效果,实现如下:

第一步:设计要d出窗口的xml布局:

@H_301_10@
<?xml version="1.0" enCoding="utf-8"?><relativeLayout  xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:layout_wIDth="fill_parent"  androID:layout_height="wrap_content"  androID:gravity="center_horizontal"  androID:orIEntation="vertical" ><linearLayout  androID:ID="@+ID/pop_layout"  androID:layout_wIDth="fill_parent"  androID:layout_height="wrap_content"  androID:gravity="center_horizontal"  androID:orIEntation="vertical"  androID:layout_alignParentBottom="true"   androID:background="@drawable/btn_style_alert_dialog_background"   >  <button    androID:ID="@+ID/btn_take_photo"    androID:layout_marginleft="20dip"    androID:layout_marginRight="20dip"    androID:layout_margintop="20dip"    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="拍照"    androID:background="@drawable/btn_style_alert_dialog_button"    androID:textStyle="bold"     />  <button    androID:ID="@+ID/btn_pick_photo"    androID:layout_marginleft="20dip"    androID:layout_marginRight="20dip"    androID:layout_margintop="5dip"     androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="从相册选择"     androID:background="@drawable/btn_style_alert_dialog_button"     androID:textStyle="bold"     />  <button    androID:ID="@+ID/btn_cancel"    androID:layout_marginleft="20dip"    androID:layout_marginRight="20dip"    androID:layout_margintop="15dip"    androID:layout_marginBottom="15dip"    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:text="取消"    androID:background="@drawable/btn_style_alert_dialog_cancel"    androID:textcolor="#ffffff"    androID:textStyle="bold"    /></linearLayout></relativeLayout>

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

@H_301_10@
import androID.app.Activity;import androID.os.Bundle;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.linearLayout;import androID.Widget.Toast;public class SelectPicPopupWindow extends Activity implements OnClickListener{  private button btn_take_photo,btn_pick_photo,btn_cancel;  private linearLayout layout;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.alert_dialog);    btn_take_photo = (button) this.findVIEwByID(R.ID.btn_take_photo);    btn_pick_photo = (button) this.findVIEwByID(R.ID.btn_pick_photo);    btn_cancel = (button) this.findVIEwByID(R.ID.btn_cancel);    layout=(linearLayout)findVIEwByID(R.ID.pop_layout);    //添加选择窗口范围监听可以优先获取触点,即不再执行ontouchEvent()函数,点击其他地方时执行ontouchEvent()函数销毁Activity    layout.setonClickListener(new OnClickListener() {      public voID onClick(VIEw v) {        // Todo auto-generated method stub        Toast.makeText(getApplicationContext(),"提示:点击窗口外部关闭窗口!",Toast.LENGTH_SHORT).show();      }    });    //添加按钮监听    btn_cancel.setonClickListener(this);    btn_pick_photo.setonClickListener(this);    btn_take_photo.setonClickListener(this);  }  //实现ontouchEvent触屏函数但点击屏幕时销毁本Activity  @OverrIDe  public boolean ontouchEvent(MotionEvent event){    finish();    return true;  }  public voID onClick(VIEw v) {    switch (v.getID()) {    case R.ID.btn_take_photo:      break;    case R.ID.btn_pick_photo:      break;    case R.ID.btn_cancel:      break;    default:      break;    }    finish();  }}

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

@H_301_10@
import androID.app.Activity;import androID.content.Intent;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.TextVIEw;public class MainActivity extends Activity {  @OverrIDe  public voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    TextVIEw tv = (TextVIEw) this.findVIEwByID(R.ID.text);    //把文字控件添加监听,点击d出自定义窗口    tv.setonClickListener(new OnClickListener() {      public voID onClick(VIEw v) {        startActivity(new Intent(MainActivity.this,SelectPicPopupWindow.class));      }    });  }}

第四步:这里要注意下AndroIDManifest.xml对SelectPicPopupWindow的配置跟常规的不一样为该activity改添加androID:theme属性,如下:
复制代码 代码如下:<activity androID:name=".SelectPicPopupWindow" androID:theme="@style/MyDialogStyleBottom" />

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

@H_301_10@
<style name="AnimBottom" parent="@androID:style/Animation">  <item name="androID:windowEnteranimation">@anim/push_bottom_in</item>  <item name="androID:windowExitAnimation">@anim/push_bottom_out</item></style><style name="MyDialogStyleBottom" parent="androID:theme.Dialog">  <item name="androID:windowAnimationStyle">@style/AnimBottom</item>  <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:windowBackground">@androID:color/transparent</item>;!-- 背景透明 -->  <item name="androID:backgroundDimEnabled">true</item>;!-- 模糊 --></style>

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

push_bottom_in.xml

@H_301_10@
<?xml version="1.0" enCoding="utf-8"?><!-- 上下滑入式 --><set xmlns:androID="http://schemas.androID.com/apk/res/androID" >  <translate    androID:duration="200"    androID:fromYDelta="100%p"    androID:toYDelta="0"   /></set>

push_buttom_out.xml

@H_301_10@
<?xml version="1.0" enCoding="utf-8"?><!-- 上下滑出式 --><set xmlns:androID="http://schemas.androID.com/apk/res/androID" >  <translate    androID:duration="200"    androID:fromYDelta="0"    androID:toYDelta="50%p"  /></set>

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

第七步;运行效果如图:

安卓4.0的手机测试时滑出的的窗口可能与整个屏幕两侧会有间隙
如果要让此界面的宽度撑满整个屏幕,可以在

@H_301_10@
setContentVIEw(R.layout.activity_main);

之后加上
复制代码 代码如下:getwindow().setLayout(VIEwGroup.LayoutParams.MATCH_PARENT,VIEwGroup.LayoutParams.WRAP_CONTENT);

更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android编程之activity *** 作技巧总结》、《Android开发入门与进阶教程》、《Android资源 *** 作技巧汇总》、《Android数据库 *** 作技巧总结》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家AndroID程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Android使用Activity实现从底部d出菜单或窗口的方法全部内容,希望文章能够帮你解决Android使用Activity实现从底部d出菜单或窗口的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1145842.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存