Android仿ios底部弹出框效果

来源:互联网 发布:2010装饰定额预算软件 编辑:程序博客网 时间:2024/05/17 07:28

准备:

public class ActionSheet {   public interface OnActionSheetSelected {      void onClick(int whichButton);   }   private ActionSheet() {   }   public static Dialog showSheet(final Context context, final int layoutId,         final OnActionSheetSelected actionSheetSelected,         final OnCancelListener cancelListener) {      final Dialog dialog = new Dialog(context, R.style.ActionSheet);      final LayoutInflater inflater = (LayoutInflater) context            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);      final LinearLayout layout = (LinearLayout) inflater.inflate(layoutId,            null);      final int cFullFillWidth = 10000;      layout.setMinimumWidth(cFullFillWidth);      final Window w = dialog.getWindow();      final WindowManager.LayoutParams lp = w.getAttributes();      lp.x = 0;      final int cMakeBottom = -1000;      lp.y = cMakeBottom;      lp.gravity = Gravity.BOTTOM;      dialog.onWindowAttributesChanged(lp);      dialog.setCanceledOnTouchOutside(true);      if (cancelListener != null) {         dialog.setOnCancelListener(cancelListener);      }      dialog.setContentView(layout);      dialog.show();      return dialog;   }}
<style name="ActionSheet" parent="@android:style/Theme.Dialog">

应用:

private ActionSheet.OnActionSheetSelected mOnActionSheetSelected;private Dialog mActionSheet;
调用showGetPhotoDialog()方法

public void onActionSheetClicked(final View view) {   mOnActionSheetSelected.onClick(view.getId());}public void setOnSheetClicked(final ActionSheet.OnActionSheetSelected onActionSheetSelected) {   mOnActionSheetSelected = onActionSheetSelected;}private void showGetPhotoDialog() {   mActionSheet = ActionSheet.showSheet(this, R.layout.actionsheet_dialog, getOnActionSheetClicked(), null);}private ActionSheet.OnActionSheetSelected getOnActionSheetClicked() {   return new ActionSheet.OnActionSheetSelected() {      @Override      public void onClick(final int whichButton) {         switch (whichButton) {            case R.id.tv_button1:                              break;
     case R.id.tv_button2:                              break;
case R.id.tv_calendar: mActionSheet.dismiss(); break; default: break; } mActionSheet.dismiss(); } };}
布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@color/clear"    android:orientation="vertical"    android:padding="5dp" >    <TextView
        android:id="@+id/tv_botton1"
android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_top_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="Button1" android:textSize="18sp" /> <TextView android:id="@+id/tv_botton2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_bottom_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="Button2" android:textColor="@color/green_title_bar" android:textSize="18sp" /> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/actionsheet_single_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="@string/cancle" android:textColor="@color/cancle_blue" android:textSize="18sp" /></LinearLayout>




0 0
原创粉丝点击