仿IOSd出框及提示框(含Demo),Android-App的设计架构经验谈

仿IOSd出框及提示框(含Demo),Android-App的设计架构经验谈,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/996613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存