android 自定义dialog iphone,android实现 仿iphoneDialog实现类似于iphone对话框样式

续:话说道哥跟发哥在上海柯炫做Android开发,看来跟发哥差距很大。总结了下发哥的技术拿来这里装逼用用。

参考这里:  http://blog.csdn.net/xiechengfa/article/details/40373331

931de90855ab5edd3e248e92356ce6f1.png

package com.zf.iosdialog;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

import com.zf.iosdialog.bean.SheetItem;

import com.zf.iosdialog.widget.IosDialog;

public class MainActivity extends Activity implements OnClickListener, OnSheetMyItemClickListner {

private Button btn1;

private Button btn2;

private Button btn3;

private Button btn4;

private Button btn5;

/***

* weixinNumber: lixiaodaoaaa weibo:www.weibo.com/lixiaodaoaaa thanks

* :xiechengfa

*/

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

private void initView() {

btn1 = (Button) findViewById(R.id.btn1);

btn1.setOnClickListener(this);

btn2 = (Button) findViewById(R.id.btn2);

btn2.setOnClickListener(this);

btn3 = (Button) findViewById(R.id.btn3);

btn3.setOnClickListener(this);

btn4 = (Button) findViewById(R.id.btn4);

btn4.setOnClickListener(this);

btn5 = (Button) findViewById(R.id.btn5);

btn5.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn5 :

IosDialog iosDialog = new IosDialog(MainActivity.this);

ArrayList listSheetItems = new ArrayList();

listSheetItems.add(new SheetItem("shabi001", 1));

listSheetItems.add(new SheetItem("shabi002", 2));

listSheetItems.add(new SheetItem("shabi003", 3));

listSheetItems.add(new SheetItem("shabi004", 4));

listSheetItems.add(new SheetItem("shabi005", 5));

listSheetItems.add(new SheetItem("shabi006", 6));

iosDialog.setSheetItems(listSheetItems, MainActivity.this);

iosDialog.show();

break;

default :

break;

}

}

@Override

public void onClickItem(int which) {

switch (which) {

case 1 :

Toast.makeText(this, "lixiaodaoaaa001", Toast.LENGTH_SHORT).show();

break;

case 2 :

Toast.makeText(this, "lixiaodaoaaa002", Toast.LENGTH_SHORT).show();

break;

case 3 :

Toast.makeText(this, "lixiaodaoaaa003", Toast.LENGTH_SHORT).show();

break;

case 4 :

Toast.makeText(this, "lixiaodaoaaa004", Toast.LENGTH_SHORT).show();

break;

case 5 :

Toast.makeText(this, "lixiaodaoaaa005", Toast.LENGTH_SHORT).show();

break;

case 6 :

Toast.makeText(this, "lixiaodaoaaa006", Toast.LENGTH_SHORT).show();

break;

default :

break;

}

}

}

IOSDialog代码(防这个效果)

package com.zf.iosdialog.widget;

import java.util.List;

import android.app.Dialog;

import android.content.Context;

import android.graphics.Color;

import android.view.Display;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.view.WindowManager;

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

import android.widget.ScrollView;

import android.widget.TextView;

import com.zf.iosdialog.OnSheetMyItemClickListner;

import com.zf.iosdialog.R;

import com.zf.iosdialog.bean.SheetItem;

public class IosDialog {

private Context context;

private Dialog dialog;

private TextView txt_title;

private TextView txt_cancel;

private LinearLayout lLayout_content;

private ScrollView sLayout_content;

private boolean showTitle = false;

private List listSheetItems;

private Display display;

public IosDialog(Context context) {

this.context = context;

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

display = windowManager.getDefaultDisplay();

builder();

}

public IosDialog builder() {

// 获取Dialog布局

View view = LayoutInflater.from(context).inflate(R.layout.view_actionsheet, null);

// 设置Dialog最小宽度为屏幕宽度

view.setMinimumWidth(display.getWidth());

// 获取自定义Dialog布局中的控件

sLayout_content = (ScrollView) view.findViewById(R.id.sLayout_content);

lLayout_content = (LinearLayout) view.findViewById(R.id.lLayout_content);

txt_title = (TextView) view.findViewById(R.id.txt_title);

txt_cancel = (TextView) view.findViewById(R.id.txt_cancel);

txt_cancel.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

dialog.dismiss();

}

});

// 定义Dialog布局和参数

dialog = new Dialog(context, R.style.ActionSheetDialogStyle);

dialog.setContentView(view);

Window dialogWindow = dialog.getWindow();

dialogWindow.setGravity(Gravity.LEFT | Gravity.BOTTOM);

WindowManager.LayoutParams lp = dialogWindow.getAttributes();

lp.x = 0;

lp.y = 0;

dialogWindow.setAttributes(lp);

return this;

}

public IosDialog setTitle(String title) {

showTitle = true;

txt_title.setVisibility(View.VISIBLE);

txt_title.setText(title);

return this;

}

public IosDialog setCancelable(boolean cancel) {

dialog.setCancelable(cancel);

return this;

}

public IosDialog setCanceledOnTouchOutside(boolean cancel) {

dialog.setCanceledOnTouchOutside(cancel);

return this;

}

/** 设置条目布局 */

public void setSheetItems(List sheetItemList, final OnSheetMyItemClickListner itemLisenner) {

this.listSheetItems = sheetItemList;

if (sheetItemList == null || sheetItemList.size() <= 0) {

return;

}

int size = sheetItemList.size();

// TODO 高度控制,非最佳解决办法

// 添加条目过多的时候控制高度

if (size >= 7) {

LinearLayout.LayoutParams params = (LayoutParams) sLayout_content.getLayoutParams();

params.height = display.getHeight() / 2;

sLayout_content.setLayoutParams(params);

}

// 循环添加条目

for (int i = 1; i <= size; i++) {

final int index = i;

final SheetItem sheetItem = sheetItemList.get(i - 1);

String strItem = sheetItem.getStrItemName();

TextView textView = new TextView(context);

textView.setText(strItem);

textView.setTextSize(18);

textView.setGravity(Gravity.CENTER);

// 背景图片

if (size == 1) {

if (showTitle) {

textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);

} else {

textView.setBackgroundResource(R.drawable.actionsheet_single_selector);

}

} else {

if (showTitle) {

if (i >= 1 && i < size) {

textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);

} else {

textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);

}

} else {

if (i == 1) {

textView.setBackgroundResource(R.drawable.actionsheet_top_selector);

} else if (i < size) {

textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);

} else {

textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);

}

}

}

textView.setTextColor(Color.parseColor(SheetItemColor.Blue.getName()));

// 高度

float scale = context.getResources().getDisplayMetrics().density;

int height = (int) (45 * scale + 0.5f);

textView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, height));

// 点击事件

textView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

itemLisenner.onClickItem(sheetItem.getITEM_CODE());

dialog.dismiss();

}

});

lLayout_content.addView(textView);

}

}

public void show() {

dialog.show();

}

public interface OnSheetItemClickListener {

void onClick(int which);

}

public enum SheetItemColor {

Blue("#037BFF"), Red("#FD4A2E");

private String name;

private SheetItemColor(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

}

此demo下载地址1:

猛击这里点坏了我赔钱啊^_^

道哥整理地址2

:猛击这里,点坏了我也赔钱



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值