Android 底部彈出提示框的解決辦法(使用Activity以及PopupWindow)

來源:互聯網
上載者:User

標籤:android   popupwindow   底部彈出框   

本片文章主要談探討了如何?在底部彈出提示框背景為半透明效果的實現。想要實現此種效果一般有兩種方式一個是使用Activity設定Theme另一種方式就是使用PopupWindow設定樣式實現效果。

一,使用Activity

首先是此activity的布局檔案:

<?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"      android:background="#b0000000"  >    <LinearLayout        android:layout_marginLeft="10dp"    android:layout_marginRight="10dp"    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/callsharp_select"       >               <Button          android:padding="10dp"        android:id="@+id/btn_take_photo"          android:layout_marginLeft="30dip"          android:layout_marginRight="30dip"          android:layout_marginTop="20dip"          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="拍照"          android:background="@drawable/whiteselector"          android:textStyle="bold"           />        <Button          android:padding="10dp"        android:id="@+id/btn_pick_photo"          android:layout_marginLeft="30dip"          android:layout_marginRight="30dip"          android:layout_marginTop="5dip"             android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="從相簿選擇"           android:background="@drawable/whiteselector"           android:textStyle="bold"           />        <Button          android:padding="10dp"        android:id="@+id/btn_cancel"         android:layout_marginLeft="30dip"         android:layout_marginRight="30dip"         android:layout_marginTop="15dip"           android:layout_marginBottom="15dip"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="取消"         android:background="@drawable/whiteselector"         android:textStyle="bold"                    />  </LinearLayout>  </RelativeLayout>  
在AndroidManifest當中的配置
<activity             android:theme="@style/activity_popup"            android:name=".PopupActivity"            ></activity>
指定了自訂的Theme 在style當中設定
<style name="activity_popup" parent="android:Theme.Translucent.NoTitleBar">    <item name="android:windowAnimationStyle">@style/AnimBottom</item>    </style>
在其中我添加了進入很退出的動畫採用了上下進出的方式:

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

進出的動畫為:

push_bottom_in:

<?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_bottom_out為:
<?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>
這樣就實現了下部彈出框。


二,使用PopupWindow實現

使用的樣式和動畫效果不改變與上邊的相同,首先一個自訂的PopupWindow

package com.example.activityanimationdemo;import android.app.ActionBar.LayoutParams;import android.app.Activity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.PopupWindow;public class MyPopupWindow extends PopupWindow{private View mainview;public MyPopupWindow(Activity context,OnClickListener itemclick){super(context);LayoutInflater inflater=(LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);mainview=inflater.inflate(R.layout.activity_popup, null);this.setWidth(LayoutParams.MATCH_PARENT);this.setHeight(LayoutParams.MATCH_PARENT);this.setContentView(mainview);this.setFocusable(true);this.setAnimationStyle(R.style.AnimBottom);}}
然後在Activity當中的點擊事件顯示PopupWindow:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//ActivityMy.this.startActivity(new Intent(ActivityMy.this, PopupActivity.class));popupwindow=new MyPopupWindow(ActivityMy.this, null);popupwindow.showAtLocation(ActivityMy.this.findViewById(R.id.demo), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);}});}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.