
本文实例讲述了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的手机测试时滑出的的窗口可能与整个屏幕两侧会有间隙
如果要让此界面的宽度撑满整个屏幕,可以在
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出菜单或窗口的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)