国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用Activity實現從底部彈出菜單或窗口的方法

2019-10-22 18:32:54
字體:
來源:轉載
供稿:網友

本文實例講述了Android使用Activity實現從底部彈出菜單或窗口的方法。分享給大家供大家參考,具體如下:

這里使用activity實現彈出滑動窗口或菜單,主要是使用了一些設置activity的樣式來實現彈出窗口和滑動效果,實現如下:

第一步:設計要彈出窗口的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_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,如下:

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即可

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);    //把文字控件添加監聽,點擊彈出自定義窗口    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屬性樣式以實現本例所需要的效果,如下:

<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>

第六步:在貼出彈出和銷毀時的動畫效果代碼:

push_bottom_in.xml

<?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

<?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文件夾下

第七步;運行效果如圖:

Android,Activity,底部,彈出菜單,窗口

安卓4.0的手機測試時滑出的的窗口可能與整個屏幕兩側會有間隙
如果要讓此界面的寬度撐滿整個屏幕,可以在

setContentView(R.layout.activity_main);

之后加上

復制代碼 代碼如下:
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

 

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涿州市| 孝义市| 明水县| 成都市| 青阳县| 乌兰浩特市| 文水县| 郓城县| 两当县| 和硕县| 定襄县| 武威市| 如皋市| 江阴市| 庆安县| 波密县| 黄山市| 滨海县| 和平区| 平和县| 宝坻区| 辽阳市| 阿鲁科尔沁旗| 拜泉县| 乐业县| 绵竹市| 房产| 外汇| 冕宁县| 防城港市| 云阳县| 武城县| 彰武县| 中宁县| 宁陵县| 灯塔市| 衡南县| 德令哈市| 凉城县| 循化| 黑山县|