• Android 大约Dialog弹出窗口


    直接效果图:

    实现步骤:

    1.主界面activity_main.xml非常easy,一个button

      

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/skin_background"
     >
    
        <Button
            android:id="@+id/show"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:gravity="center"
            android:text="退出系统"
            android:textSize="20sp" />
    
    </RelativeLayout>
    2.弹出层样式actionsheet.xml

      

    <?xml version="1.0" encoding="utf-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent" android:orientation="vertical" android:padding="5dp" > <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_top_normal" android:gravity="center" android:text="@string/title" android:textColor="#8F8F8F" android:textSize="16sp" /> <TextView android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_bottom_selector" android:gravity="center" android:text="@string/content" android:textColor="#FD4A2E" android:textSize="16sp" /> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/actionsheet_single_selector" android:gravity="center" android:text="@string/cancel" android:textColor="#037BFF" android:textSize="16sp" /> </LinearLayout>

    3.ActionSheet类

      

    public class ActionSheet {
    
    	public interface OnActionSheetSelected {
    		void onClick(int whichButton);
    	}
    
    	private ActionSheet() {
    	}
    
    	public static Dialog showSheet(Context context, final OnActionSheetSelected actionSheetSelected,
    			OnCancelListener cancelListener) {
    		final Dialog dlg = new Dialog(context, R.style.ActionSheet);
    		LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    		LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.actionsheet, null);
    		final int cFullFillWidth = 10000;
    		layout.setMinimumWidth(cFullFillWidth);
    
    		TextView mContent = (TextView) layout.findViewById(R.id.content);
    		TextView mCancel = (TextView) layout.findViewById(R.id.cancel);
    
    		mContent.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				actionSheetSelected.onClick(0);
    				dlg.dismiss();
    			}
    		});
    
    		mCancel.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				actionSheetSelected.onClick(1);
    				dlg.dismiss();
    			}
    		});
    
    		Window w = dlg.getWindow();
    		WindowManager.LayoutParams lp = w.getAttributes();
    		lp.x = 0;
    		final int cMakeBottom = 0;
    		lp.y = cMakeBottom;
    		lp.gravity = Gravity.CENTER;
    		dlg.onWindowAttributesChanged(lp);
    		dlg.setCanceledOnTouchOutside(false);
    		if (cancelListener != null)
    			dlg.setOnCancelListener(cancelListener);
    
    		dlg.setContentView(layout);
    		dlg.show();
    
    		return dlg;
    	}
    
    }
    
    4.MainActivity

      

    public class MainActivity extends Activity implements OnActionSheetSelected, OnCancelListener {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		findViewById(R.id.show).setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				ActionSheet.showSheet(MainActivity.this, MainActivity.this, MainActivity.this);
    			}
    		});
    	}
    
    	@Override
    	public void onClick(int whichButton) {
    		// TODO Auto-generated method stub
    		switch (whichButton) {
    			case 0:
    				showToast("确定");
    				break;
    
    			case 1:
    				showToast("取消");
    				break;
    
    			default:
    				break;
    		}
    
    	}
    
    	@Override
    	public void onCancel(DialogInterface dialog) {
    		// TODO Auto-generated method stub
    		showToast("取消");
    	}
    
    	private void showToast(CharSequence charSequence) {
    		Toast.makeText(this, charSequence, Toast.LENGTH_SHORT).show();
    	}
    }
    

     源代码下载地址



       

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    网络协议-网络编程学习方法介绍
    socket函数集-----网络编程必备值得拥有
    QT 等待对话框/进度--
    qt部分类释义
    Unicode 10.0版本出现了,可以表达13万个字符, 99年定制的3.0版本不超过6万个字符
    hadoop+spark+mongodb+mysql+c#
    mysql 主从复制
    Docker for Windows
    项目设计&重构&性能优化
    发布项目到 Linux 上运行 Core 项目
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4618486.html
Copyright © 2020-2023  润新知