public class MainActivity extends Activity implements PhotoDialogListner{
private MainActivity mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
PhotoUpDialog dialog = new PhotoUpDialog(mContext,
R.style.dialog);
dialog.setPhotoDialogListner(mContext);
dialog.show();
}
});
}
@Override
public void takePhoto() {
Toast.makeText(mContext, "拍照", Toast.LENGTH_SHORT) .show();
}
@Override
public void pickPhoto() {
Toast.makeText(mContext, "相册", Toast.LENGTH_SHORT) .show();
}
}
Activity布局自行脑补
====================================================================
package com.example.testdialog;
import android.app.Dialog;
import android.content.Context;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class PhotoUpDialog extends Dialog implements
android.view.View.OnClickListener {
private Button btnTakePhoto;
private Button btnPickPhoto;
private Button btnCancel;
private PhotoDialogListner pd;
public interface PhotoDialogListner {
/**
* 拍照
*/
void takePhoto();
/**
* 相册中获取
*/
void pickPhoto();
}
public void setPhotoDialogListner(PhotoDialogListner pd) {
this.pd = pd;
}
@SuppressWarnings("deprecation")
public PhotoUpDialog(Context context, int mydialog) {
super(context, mydialog);// 这点很重要,否则设置无效!
View menuView = View.inflate(context, R.layout.menu_p_photo_dlg, null);
this.setContentView(menuView);
btnTakePhoto = (Button) menuView.findViewById(R.id.menu_btn_take_photo);
btnPickPhoto = (Button) menuView.findViewById(R.id.menu_btn_pick_photo);
btnCancel = (Button) menuView.findViewById(R.id.menu_btn_cancel);
btnTakePhoto.setOnClickListener(this);
btnPickPhoto.setOnClickListener(this);
btnCancel.setOnClickListener(this);
this.setCanceledOnTouchOutside(true);
WindowManager windowManager = ((MainActivity) context)
.getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = this.getWindow().getAttributes();
lp.width = (int) (display.getWidth()); // 设置宽度
this.getWindow().setAttributes(lp);
Window window = this.getWindow();
window.setGravity(Gravity.BOTTOM); // 此处可以设置dialog显示的位置
window.setWindowAnimations(R.style.AnimFromBottom); // 添加动画
}
@Override
public void onClick(View view) {
if (view == btnTakePhoto) {
pd.takePhoto();
}
if (view == btnPickPhoto) {
pd.pickPhoto();
}
// 取消
if (view == btnCancel) {
dismiss();
}
}
}
=====================================================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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" >
<Button
android:id="@+id/menu_btn_take_photo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:background="#ccc"
android:text="拍照" />
<Button
android:id="@+id/menu_btn_pick_photo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="#cff"
android:text="相册" />
</LinearLayout>
<Button
android:id="@+id/menu_btn_cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="10dp"
android:background="#cee"
android:text="取消" /</LinearLayout>
源码下载地址 http://download.csdn.net/detail/anroidyanyou/9652787