@Override
public void onMyCancle() {
}
});
}
private void showIosDialog() {
new IosDialog(MainActivity.this, “取消”,
new String[] { “孙悟空”, “猪八戒”, “沙僧” }, true)
.setOnMyPopClickListener(new MyPopClickListener() {
@Override
public void myListItemClick(int itemPosition,String itemContent) {
if (itemPosition == 0) {
Toast.makeText(MainActivity.this, “点击了孙悟空”, Toast.LENGTH_SHORT).show();
} else if (itemPosition == 1) {
Toast.makeText(MainActivity.this, “点击了猪八戒”, Toast.LENGTH_SHORT).show();
} else if (itemPosition == 2) {
Toast.makeText(MainActivity.this, “点击了沙僧”, Toast.LENGTH_SHORT).show();
}
}
@Override
public void myCancleClick(String cancleContent) {
}
});
}
}
IOSd框
package com.example.iosdialog;
import com.example.iosdialog.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.TextView;
public class IosDialog {
private Context mContext;
private String mCancleContent;
private String[] mItems;
private Boolean mCancleAbleOutSide = true;
private PopupWindow mPopupWindow;
private View mShowAtView = null ;
/**
@param mContext 上下文
@param mCancleContent 取消按钮文字
@param mItems 文字菜单数组
@param mCancleAbleOutSide 是否让点击外部取消
*/
public IosDialog(Context mContext,String mCancleContent, String[] mItems, Boolean mCancleAbleOutSide) {
super();
this.mContext = mContext;
this.mCancleContent = mCancleContent;
this.mItems = mItems;
this.mCancleAbleOutSide = mCancleAbleOutSide;
showMyBottomPop();
}
/**
此种情况适用于在d框上d出pop
@param mShowAtView d框的布局
@param mContext 上下文
@param mCancleContent 取消按钮文字
@param mItems 文字菜单数组
@param mCancleAbleOutSide 是否让点击外部取消
*/
public IosDialog(View mShowAtView ,Context mContext,String mCancleContent, String[] mItems, Boolean mCancleAbleOutSide) {
super();
this.mContext = mContext;
this.mCancleContent = mCancleContent;
this.mItems = mItems;
this.mCancleAbleOutSide = mCancleAbleOutSide;
this.mShowAtView = mShowAtView;
showMyBottomPop();
}
@SuppressWarnings(“deprecation”)
@SuppressLint(“InflateParams”)
public void showMyBottomPop() {
View view = LayoutInflater.from(mContext).inflate(R.layout.layout_ios_pop, null);
ListView list = (ListView) view.findViewById(R.id.pop_list);
TextView cancle = (TextView) view.findViewById(R.id.cancle_tv);
cancle.setText(mCancleContent);
list.setAdapter(new MyItemAdapter());
mPopupWindow = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
mPopupWindow.setFocusable(true);
// 点击外面popupWindow消失
mPopupWindow.setO
utsideTouchable(mCancleAbleOutSide);
if (mCancleAbleOutSide) {
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
}
// 设置popWindow的显示和消失动画
mPopupWindow.setAnimationStyle(R.style.mypopwindow_anim_style);
// 在底部显示
if (mShowAtView!=null) {
mPopupWindow.showAtLocation(mShowAtView, Gravity.BOTTOM, 0, 0);
}else {
mPopupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
}
backgroundAlpha(0.5f);
cancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
disMissPop();
if (myPopClickListener!=null) {
myPopClickListener.myCancleClick(mCancleContent);
}
}
});
mPopupWindow.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
backgroundAlpha(1f);
}
});
}
class MyItemAdapter extends BaseAdapter{
@Override
public int getCount() {
int conut = 0;
if (mItems!=null && mItems.length>0) {
conut = mItems.length;
}
return conut;
}
@Override
public Object getItem(int position) {
String item = “暂无内容”;
if (mItems!=null && mItems.length>0) {
item = mItems[position];
}
return item;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder= new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.layout_pop_list_item, parent , false);
holder.item_tv = (TextView) convertView.findViewById(R.id.item_tv);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.item_tv.setText(getItem(position).toString());
if (getCount()==1) {
convertView.setBackgroundResource(R.drawable.pop_cancle);
}else {
if (position == 0) {
convertView.setBackgroundResource(R.drawable.pop_item_first_bg);
}else if (position == (mItems.length - 1)) {
convertView.setBackgroundResource(R.drawable.pop_item_last_bg);
}else {
convertView.setBackgroundResource(R.drawable.pop_item_middle_bg);
}
}
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
disMissPop();
if (myPopClickListener!=null) {
myPopClickListener.myListItemClick(position, getItem(position).toString());
}
}
});
return convertView;
}
class ViewHolder {
TextView item_tv;
}
}
private MyPopClickListener myPopClickListener;
public void setOnMyPopClickListener(MyPopClickListener myPopClickListener){
this.myPopClickListener = myPopClickListener;
}
public interface MyPopClickListener{
public void myListItemClick(int itemPosition, String itemContent);
public void myCancleClick(String cancleContent);
}
private void disMissPop(){
if (mPopupWindow!=null && mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
}
}
/**
设置添加屏幕的背景透明度
@param bgAlpha
*/
public void backgroundAlpha(float bgAlpha) {
WindowManager.LayoutParams lp = ((Activity) mContext).getWindow().getAttributes();
lp.alpha = bgAlpha; // 0.0-1.0
((Activity) mContext).getWindow().setAttributes(lp);
}
}
通用提示框代码
package com.example.iosdialog;
import android.app.AlertDialog;
import android.content.Context;
import android.text.util.Linkify;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
0.0-1.0
((Activity) mContext).getWindow().setAttributes(lp);
}
}
通用提示框代码
package com.example.iosdialog;
import android.app.AlertDialog;
import android.content.Context;
import android.text.util.Linkify;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)