ayrascal

Android仿ios底部弹出框效果

准备:

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_button1"
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="按钮1"
android:textSize="18sp" />

<TextView
android:id="@+id/tv_button2"
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="按钮2"
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>

posted on 2017-03-03 16:38  ayrascal  阅读(858)  评论(0)    收藏  举报

导航