android實現 仿iphoneDialog實作類別似於iphone對話方塊樣式

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   color   ar   os   sp   

   續:  話說道哥跟發哥在上海柯炫做Android開發,看來跟發哥差距很大。總結了下發哥的技術拿來這裡裝逼用用。

參考這裡:  http://blog.csdn.net/xiechengfa/article/details/40373331

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 */@Overrideprotected 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);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn5 :IosDialog iosDialog = new IosDialog(MainActivity.this);ArrayList<SheetItem> listSheetItems = new ArrayList<SheetItem>();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;}}@Overridepublic 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<SheetItem> 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() {@Overridepublic 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<SheetItem> 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() {@Overridepublic 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;}}}

 此demo1: 猛擊這裡點壞了我賠錢啊^_^ 道哥整理地址2 :猛擊這裡,點壞了我也賠錢





android實現 仿iphoneDialog實作類別似於iphone對話方塊樣式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.