返回顶部
首页 > 资讯 > 精选 >在Android应用中常见弹框有哪些
  • 401
分享到

在Android应用中常见弹框有哪些

android中常roi 2023-05-31 10:05:45 401人浏览 安东尼
摘要

本篇文章给大家分享的是有关在Android应用中常见弹框有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.Dialog弹框android 8种对话框(Dialog)使用方

本篇文章给大家分享的是有关在Android应用中常见弹框有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1.Dialog弹框

android 8种对话框(Dialog)使用方法汇总

Dialog是系统自带的弹框,然而常常因为UI不好看而遭嫌弃,常需要自定义

public class MyDialog extends Dialog implements android.view.View.OnClickListener {  private Context mContext;  private String mTitle;  private String mDetail;  private TextView mTextTitle;  private TextView mTextDetail;  private TextView mButtonYes;  private TextView mButtonNo;  private onClickInterface mOnclClickInterface;  public MyDialog(Context context, String title, String detail) {    super(context, R.style.MyDialogStyle);    this.mContext = context;    this.mTitle = title;    this.mDetail = detail;  }  @Override  protected void onCreate(Bundle savedInstanceState) {    // TODO Auto-generated method stub    super.onCreate(savedInstanceState);    initView();  }  private void initView() {    LayoutInflater inflater = LayoutInflater.from(mContext);    View view = inflater.inflate(R.layout.layout_dialog, null);    setContentView(view);    mButtonYes = (TextView) view.findViewById(R.id.dialog_yes);    mButtonNo = (TextView) view.findViewById(R.id.dialog_no);    mTextTitle = (TextView) view.findViewById(R.id.dialog_title);    mTextDetail = (TextView) view.findViewById(R.id.dialog_detail);    mTextTitle.setText(mTitle);    mTextDetail.setText(mDetail);    mButtonYes.setOnClickListener(this);    mButtonNo.setOnClickListener(this);  }  public interface onClickInterface {    public void clickYes();    public void clickNo();  }  public void setOnClickInterface(onClickInterface onclClickInterface) {    this.mOnclClickInterface = onclClickInterface;  }  @Override  public void onClick(View v) {    switch (v.getId()) {      case R.id.dialog_yes:        mOnclClickInterface.clickYes();        break;      case R.id.dialog_no:        mOnclClickInterface.clickNo();        break;      default:        break;    }  }}

这里就是:1.绑定布局 2.设置监听,监听接口

主要说一下布局里的stytle(悬浮在Activity上,模糊显示就是在这里控制)

<style name="MyDialogStyle">  <item name="android:windowBackground">@android:color/transparent</item> <!--设置dialog的背景-->  <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无-->  <item name="android:windowNoTitle">true</item> <!--是否有title-->  <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上-->  <item name="android:windowIsTranslucent">false</item> <!--是否半透明-->  <item name="android:windowContentOverlay">@null</item> <!--对话框是否有遮盖,这个不设置的话,可能会出现边框黑线-->  <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <!--动画-->  <item name="android:backgroundDimEnabled">true</item> <!-- 背景是否模糊显示--></style>

Dialog弹框一般用于,网络数据加载显示,或交互较少的弹框(基本被新下拉刷新控件SwipeRefreshLayout替代)

2.Window弹框

public class MyWindow {  private Context mContext;  private WindowManager mwinWindowManager;  private View mView;  private static boolean isshow = false;  public MyWindow(Context context) {   mContext = context.getApplicationContext();  }  public void showMyWindow() {   if (isShow) {     return;   }   mwinWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);   //设置WindowManager.LayoutParams的属性   WindowManager.LayoutParams params = new WindowManager.LayoutParams();   //类型   params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;   //flags   //如果设置了WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,弹出的View没焦点,收不到Back键的事件   //当按Back、Home键时,背景应用退出,弹出的view就可以悬浮在桌面了。   params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;   params.fORMat = PixelFormat.TRANSLUCENT;   params.width = LayoutParams.MATCH_PARENT;   params.height = LayoutParams.MATCH_PARENT;   params.gravity = Gravity.CENTER;   //初始化View   mView = initView(mContext);   //点击back键,关闭window   mView.setOnKeyListener(new View.OnKeyListener() {     @Override     public boolean onKey(View v, int keyCode, KeyEvent event) {      Log.d("wxx", "onKey");      switch (keyCode) {      case KeyEvent.KEYCODE_BACK:        Log.d("wxx", "onKey BACK");        hideMyWindow();        return true;      default:      return false;      }     }   });   mwinWindowManager.addView(mView, params);   isShow = true;  }  private View initView(Context context) {   LayoutInflater inflater = LayoutInflater.from(context);   View view = inflater.inflate(R.layout.layout_window, null);   Button btnYes = (Button) view.findViewById(R.id.window_yes);   btnYes.setOnClickListener(new View.OnClickListener() {     @Override     public void onClick(View v) {      Toast.makeText(mContext, "Window yes!", Toast.LENGTH_LONG).show();      hideMyWindow();     }   });   Button btnNO = (Button) view.findViewById(R.id.window_no);   btnNO.setOnClickListener(new View.OnClickListener() {     @Override     public void onClick(View v) {      Toast.makeText(mContext, "Window No!", Toast.LENGTH_LONG).show();      hideMyWindow();     }   });       //点击window窗口外围,关闭window   final View wView = view.findViewById(R.id.view_layout);   view.setOnTouchListener(new View.OnTouchListener() {     @Override     public boolean onTouch(View v, MotionEvent event) {      int x = (int) event.getX();      int y = (int) event.getY();      Rect rect = new Rect();      wView.getGlobalVisibleRect(rect);      if (!rect.contains(x, y)) {        hideMyWindow();      }      return false;     }   });   return view;  }  public void hideMyWindow() {   if (isShow && mView != null) {     mwinWindowManager.removeView(mView);     isShow = false;   }  }}

这个就厉害了,展现,隐藏,点击监听都是自己写的方法,原来点击窗口外关闭窗口是这样实现的,是不是又学到了

然后是关于:

android Window WindowManager 整理

主要用于自定义控件,比如说下拉框:

自定义spinner下拉框

3.Activity伪弹框

public class MyActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {   // TODO Auto-generated method stub   super.onCreate(savedInstanceState);   setContentView(R.layout.layout_activity);  }  @Override  public boolean onTouchEvent(MotionEvent event) {   this.finish();   return true;  }  public void YesButton(View v) {   this.finish();   Toast.makeText(getApplicationContext(), "Yes, Hunman is Activity", Toast.LENGTH_LONG).show();  }  public void NoButton(View v) {   this.finish();   Toast.makeText(getApplicationContext(), "No, Hunman is not Activity", Toast.LENGTH_LONG).show();  }}

简单得不能再简单,跳转跳转到另一个Activity

注意点Activity主题(控制Activity为弹框样式):

<activity  android:name="com.wuxianxi.hunman.smallwindows.MyActivity"  android:theme="@style/MyActivityStyle" ></activity><style name="MyActivityStyle">  <item name="android:windowBackground">@android:color/transparent</item> <!--设置dialog的背景-->  <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无-->  <item name="android:windowNoTitle">true</item> <!--是否有title-->  <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上-->  <item name="android:windowIsTranslucent">true</item> <!--是否半透明-->  <item name="android:windowContentOverlay">@null</item> <!--对话框是否有遮盖,这个不设置的话,可能会出现边框黑线-->  <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <!--动画-->  <item name="android:backgroundDimEnabled">true</item> <!-- 背景是否模糊显示--></style>

Activity伪弹框最常用,用于交互,操作较复杂的弹框,如图二

补充这里可通过方法控制Activity弹框宽比

 @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);        WindowManager windowManager = getWindowManager();        Display display = windowManager.getDefaultDisplay();        WindowManager.LayoutParams p = getWindow().getAttributes();        p.width = (int) (display.getWidth() * 0.9);        p.alpha = 0.95f;        getWindow().setAttributes(p);//    getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,//        ViewGroup.LayoutParams.WRAP_CONTENT);        setFinishOnTouchOutside(false);  }

最后贴上MainActivity

public class MainActivity extends ActionBarActivity implements OnClickListener {  private Button btnWindow;  private Button btnDialog;  private Button btnActivity;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   initView();  }  private void initView() {   btnWindow = (Button) findViewById(R.id.btn_window);   btnDialog = (Button) findViewById(R.id.btn_dialog);   btnActivity = (Button) findViewById(R.id.btn_activity);   btnWindow.setOnClickListener(this);   btnDialog.setOnClickListener(this);   btnActivity.setOnClickListener(this);  }  @Override  public void onClick(View v) {   switch (v.getId()) {   case R.id.btn_window:     MyWindow myWindow = new MyWindow(this);     myWindow.showMyWindow();     break;   case R.id.btn_dialog:     //注意下面第一个参数不能为getApplicationContext(),而应该是Activity, 因为办有activity才能添加窗口     final MyDialog dialog = new MyDialog(MainActivity.this, "Hunman - Dialog", "Hunman is a Dialog\nYes or No!");     dialog.show();     dialog.setOnClickInterface(new MyDialog.onClickInterface() {      @Override      public void clickYes() {        dialog.dismiss();        Toast.makeText(getApplicationContext(), "Yes, Hunman is Dialog", Toast.LENGTH_LONG).show();      }      @Override      public void clickNo() {        dialog.dismiss();        Toast.makeText(getApplicationContext(), "Yes, Hunman is not Dialog", Toast.LENGTH_LONG).show();      }     });     break;   case R.id.btn_activity:     Intent intent3 = new Intent(MainActivity.this, MyActivity.class);     startActivity(intent3);     break;   default:     break;   }  }}

以上就是在Android应用中常见弹框有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 在Android应用中常见弹框有哪些

本文链接: https://lsjlt.com/news/224845.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在Android应用中常见弹框有哪些
    本篇文章给大家分享的是有关在Android应用中常见弹框有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.Dialog弹框android 8种对话框(Dialog)使用方...
    99+
    2023-05-31
    android 中常 roi
  • 浅析Android中常见三种弹框在项目中的应用
    一丶概述 弹框在Android项目中经常出现,常见的实现方法有三种:Dialog 弹框,Window弹框,Activity伪弹框。本文就说一说三种弹框的实现及在项目中的运用。 ...
    99+
    2022-06-06
    Android
  • Caffe框架有哪些常见的应用领域
    Caffe框架常见的应用领域包括但不限于: 图像识别和分类:Caffe框架在图像识别和分类领域取得了较好的应用效果,可以用于识别...
    99+
    2024-03-11
    Caffe
  • php中常见的框架有哪些
    这篇文章将为大家详细讲解有关php中常见的框架有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、...
    99+
    2023-06-14
  • android常用框架有哪些
    Android开发中常用的框架有:1. Android Jetpack:Android官方推出的一套组件库,包括了一系列的库,如Li...
    99+
    2023-10-08
    Android
  • Android常见bug有哪些
    这篇文章给大家分享的是有关Android常见bug有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、关于使用OkHttp运行时出现的错误报错如下:Static interface met...
    99+
    2023-06-14
  • 常见python框架有哪些
    这篇文章主要介绍了常见python框架有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-14
  • 数组在Java中有哪些常见的应用场景?
    Java是一门广泛应用的编程语言,它有着丰富的数据结构,其中数组是最基础也是最常用的数据结构之一。数组是一种容器,它能够存储多个相同类型的元素,这些元素在内存中是连续存储的。本文将介绍在Java中数组的常见应用场景以及相关的代码实现。 1....
    99+
    2023-07-20
    unix 自然语言处理 数组
  • 常见的RIA应用有哪些
    这篇文章将为大家详细讲解有关常见的RIA应用有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先什么是RIARIA是RichInternetApplication(富互联网应用系统,亦称富客户端)的缩...
    99+
    2023-06-17
  • 有哪些常见的css框架
    这篇文章给大家介绍有哪些常见的css框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.Bootstrap基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。...
    99+
    2023-06-14
  • golang常见的框架有哪些
    golang的常用框架有“Gin”、“Echo”、“Beego”、“Revel“和”Buffalo“五种:1、Gin,一个轻量级的Web框架,具有出色的性能和易用性;2、Echo,一个高性能的Web框架,具有简单、直观的API设计;3、Be...
    99+
    2023-12-13
    golang框架 go语言 Golang
  • HTTP响应在Python中的常见错误有哪些?
    HTTP响应在Python中的常见错误有哪些? HTTP协议是Web应用程序中最常用的协议之一。它定义了客户端和服务器之间的通信方式。客户端向服务器发送HTTP请求,服务器根据请求返回HTTP响应。在Python中,我们可以使用HTTP库来...
    99+
    2023-07-07
    http 响应 django
  • GIT在GO语言中有哪些常见的应用场景?
    GIT是目前广泛应用于版本控制的工具之一,而GO语言则是近年来备受关注的编程语言之一。两者在实际应用中有着紧密的联系,GIT在GO语言中的应用场景也是非常广泛的,本文将对此进行探讨。 一、代码管理 GIT最基础的应用场景就是代码管理,GO语...
    99+
    2023-07-03
    数据类型 框架 git
  • Ajax常见应用场景有哪些
    这篇文章将为大家详细讲解有关Ajax常见应用场景有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 什么是AJAXAJAX(Asynchronous JavaScri...
    99+
    2024-04-02
  • Android Studio中常见快捷键有哪些
    这篇文章主要介绍“Android Studio中常见快捷键有哪些”,在日常操作中,相信很多人在Android Studio中常见快捷键有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android Stu...
    99+
    2023-06-04
  • java中有哪些常见微服务框架
    常见微服务框架介绍:Spring Boot:这可能是最好的Java微服务框架了,它适用于控制反转、面向切面编程等等。示例代码:import org.springframework.boot.*; import org.springframe...
    99+
    2019-01-22
    java入门 java 微服务 框架
  • 在java中常见的异常类有哪些
    java中常见的异常类有:NullPointerException:当应用程序试图访问空对象时,则抛出该异常。SQLException:提供关于数据库访问错误或其他错误信息的异常。IndexOutOfBoundsException:指示某排...
    99+
    2024-04-02
  • Golang中Context的常见应用场景有哪些
    这篇文章主要讲解了“Golang中Context的常见应用场景有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中Context的常见应用场景有哪些”吧!超时取消假设我们希望H...
    99+
    2023-07-04
  • android常见的控件有哪些
    Android常见的控件有:1. TextView:用于显示文本2. EditText:用于输入文本3. Button:用于触发点击...
    99+
    2023-09-27
    android
  • Golang常见的应用场景在软件开发中有哪些?
    Golang作为一种开发语言,具有简洁高效、并发性能强等特点,因而在软件开发中有着广泛的应用场景。下面将介绍一些常见的应用场景。网络编程Golang在网络编程方面表现出色,特别适合构建高并发、高性能的服务器。它提供了丰富的网络库,开发人员可...
    99+
    2023-12-28
    云计算 web开发 分布式系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作