Android AndBase框架内部封装实现进度框、Toast框、弹出框、确认框(二)_Android

本文是针对AndBase框架学习整理的第二篇笔记,想要了解AndBase框架的朋友可以阅读本文,大家共同学习。

使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框

AndBase中AbActivity封装好了许多方法提供我们去使用,使得在使用的时候更加的方便,只需要传递相关参数即可..省去了我们自己使用基础的函数进行构造...

就好比进度框,Toast框,弹出框,确认框...这些基本的东西都在AndBase的AbActivity封装好了...我们只需要传递参数调用其中内部的方法就可以完成这些视图的创建...无论是进度条的调用,还是Toast框,还是弹出框,确认框(确认框和弹出框基本相似),只是确认框比弹出框多了一些相关控件而已,弹出框一般用于直接弹出一段文本信息,而去确认框则还需要添加相关的按钮...总之调用的方式也就非常的简单...

/*
 *
 * 多功能菜单...
 *
 * */
package com.example.andbaseanotheractivity;

import com.ab.activity.AbActivity;
import com.ab.global.AbConstant;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

import android.widget.Button;

public class MainActivity extends AbActivity implements View.OnClickListener {

 private Button but[]=new Button[6];
 private View view;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setAbContentView(R.layout.activity_main);

 InitFindID();
 }

 public void InitFindID(){
 for(int i=0;i<but.length;i++){
  String resID="but_"+i;
  but[i]=(Button) findViewById(this.getResources().getIdentifier(resID, "id", "com.example.andbaseanotheractivity")); //寻找ID的一种比较好的方式..这种方式的使用前提是ID的定义一定要有一定的规则...
  but[i].setOnClickListener(this);
 }
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }

 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 view=mInflater.inflate(R.layout.demo_text, null);
 switch(v.getId()){
 case R.id.but_0:
  showProgressDialog(); //直接弹出圆形进度框...
  break;
 case R.id.but_1:
  showToast("Toast文本框"); //Toast文本框...
  break;
 case R.id.but_2:
  showDialog(AbConstant.DIALOGTOP, view); //弹出框..传递参数为显示的位置以及显示的视图...这里表示在最上方弹出...
  break;
 case R.id.but_3:
  showDialog(AbConstant.DIALOGCENTER, view); //
  break;
 case R.id.but_4:
  showDialog(AbConstant.DIALOGBOTTOM, view);
  break;
 case R.id.but_5:
   //可以看到确认框也是调用showDialog方法..只是传递的参数不相同..AbActivity也针对这几种不同的弹出框定义了不同的方法...
  showDialog("标题", "描述", new OnClickListener() {

  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   showToast("点击确认");
  }
  });
  break;
 }
 }

}

这里我们可以看到,只需要调用相关的方法,传递相关的参数就能够完成这些基本View的创建..从而使得我们的操作更加的方便...

以前的Toast信息弹出框调用的方式:

Toast.makeText(getApplicationContext(),"需要想要显示的信息",Toast.LENGTH).show();
 现在的方式就是这样:

showToast("需要显示的信息");

这样直接就可以完成Toast信息框的显示..对于这样的简单方式的封装,可能我们不以为然..但是如果是更多的代码量呢?就拿我们的确认弹出框来说吧...如果是在以往的Activity中书写一个确认弹出框,我们需要手动去进行重写...下面就是基于Activity来手写的一个确认框...

AlertDialog.Builder builder=new Builder(MainActivity.this);
builder.setTitle("提示");
builder.setMessage("确认退出");
builder.setPositiveButton("确认", new OnClickListener() { //添加确认按钮...

  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   dialog.dismiss(); /提示框消失..
  }
  });
builder.setNegativeButton("取消", new OnClickListener() { //添加取消按钮..

  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   dialog.dismiss();
  }
  });

  使用AndBase框架通过调用函数的方式,这样就使得这个过程就非常的简单..我们只需要传递相关的参数调用方法就可以了...这个函数的调用和上面的书写方式所带来的效果是相同的,并且这里我们不需要再设置dialog.dismiss();只要点击了按钮,那么弹出框就会消失...这里的OnClick方法是后续弹出框消失后需要执行的操作...相比而言,使用框架还是简化了代码量

showDialog("提示", "确认退出", new OnClickListener() {

  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   showToast("点击确认");
  }
  });

其实这些简单的View还是非常的简单的...虽然看起来代码量减少的并不是非常的多,但是如果对于更加复杂的操作...框架中优化好的方法还是非常的好用的...即减少了代码的冗余度,而且还实现了更多的功能...

  还是看一下源码的实现过程吧...

 Toast框的源码实现过程...我们可以看到,框架中的方法把原生态的方法进行了封装,我们只需要传递相关参数就可以直接使用Toast框...其实源码内部还有showToastInThread()的源码..通过开启一个新的线程

/**
 * 描述:Toast提示文本.
 * @param text 文本
 */
 public void showToast(String text) {
 Toast.makeText(this,""+text, Toast.LENGTH_SHORT).show(); //这里已经把这个方法封装好了...我们只需要传递需要显示的文本就行了...
 }

 /**
 * 描述:Toast提示文本.
 * @param resId 文本的资源ID
 */
 public void showToast(int resId) {
 Toast.makeText(this,""+this.getResources().getText(resId), Toast.LENGTH_SHORT).show(); //这种方法则是通过resID来设置需要显示的文本...
 }

  进度框的源码实现过程...源码非常的简单...我们在使用一个进度条的时候只需要调用这两种方法就可以了...

/**
 * 描述:显示进度框.
 */
 public void showProgressDialog() {
 showProgressDialog(null); //没有显示进度的进度框..
 }

 /**
 * 描述:显示进度框.
 * @param message the message
 */
 public void showProgressDialog(String message) {
 // 创建一个显示进度的Dialog
 if(!AbStrUtil.isEmpty(message)){
  mProgressMessage = message; //设置进度框显示的信息...
 }
 if (mProgressDialog == null) {
  mProgressDialog = new ProgressDialog(this);
  // 设置点击屏幕Dialog不消失
  mProgressDialog.setCanceledOnTouchOutside(false);
 }
 mProgressDialog.setMessage(mProgressMessage);//设置进度框显示的消息..
 showDialog(AbConstant.DIALOGPROGRESS);
 }

  弹出框的源码我就不进行粘贴了,由于源码写的确实有点多...这里就只粘贴一下封装的方法...

  这个方法显示的对话框是一个信息弹出框,没有按钮,只是进行信息的提示...id的作用设置弹出框显示的位置...View表示需要显示的视图...这样就创建了一个弹出框在指定的位置进行显示...

public void showDialog(int id,View view) {} 
  上面方法的执行过程中,会调用setDialogLayoutParams()函数去设置相关属性,设置弹出框布局的参数,也就是弹出框如何在屏幕上更好的显示的一个设置...

 这是源码的调用过程,看起来并不是很难理解...

private void setDialogLayoutParams(Dialog dialog,int dialogPadding,int gravity){
 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //设置没有标题..
 Window window = dialog.getWindow(); //获取窗口...
 WindowManager.LayoutParams lp = window.getAttributes();//获取窗口属性...
 //此处可以设置dialog显示的位置
 window.setGravity(gravity); //设置窗口的对其方式...
 //设置宽度
 lp.width = diaplayWidth-dialogPadding;
 lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
 //背景透明
 //lp.screenBrightness = 0.2f;
 lp.alpha = 0.8f;
 lp.dimAmount = 0f;
 window.setAttributes(lp);
 // 添加动画
 window.setWindowAnimations(android.R.style.Animation_Dialog);
 // 设置点击屏幕Dialog不消失
 dialog.setCanceledOnTouchOutside(false);

 }

这个方法的弹出框是一个带有按钮的确认框,title和msg表示对话框的标题内容和提示内容...以及点击确认按钮时发生的监听事件的传递...

public void showDialog(String title,String msg,DialogInterface.OnClickListener mOkOnClickListener) {} 
  这个方法的弹出框和上面的唯一区别就是,弹出框的内容不是指定的字符串,而是一个我们自定义的一个视图..

public AlertDialog showDialog(String title,View view,DialogInterface.OnClickListener mOkOnClickListener) {}
  弹出框基本都是这些模式...源码的实现非常的简单...原理都是对那些基本函数的一些封装...剩下的几个就不粘贴了..万变不离其宗。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 弹出框
, 确认框
, 进度框
, AndBase框架
Toast框
andbase框架、andbase框架使用详解、andbase框架下载、android andbase框架、andbase框架怎么用,以便于您获取更多的相关知识。

时间: 2024-10-27 11:58:18

Android AndBase框架内部封装实现进度框、Toast框、弹出框、确认框(二)_Android的相关文章

Android AndBase框架使用封装好的函数完成Http请求(三)_Android

本文是针对AndBase框架学习整理的第三篇笔记,想要了解AndBase框架的朋友可以阅读本文,大家共同学习. 学习内容: 1.使用AndBase框架实现无参Http Get请求... 2.使用AndBase框架实现有参Http Post请求... 3.使用AndBase框架实现有参Http Get请求...    AndBase框架为我们提供了一些相关的方法提供给我们使用,用来完成Http网络请求...总体就是对Http请求的一个封装,不过个人认为,网络请求这一模块更加推荐使用Volley框架

Android AndBase框架使用封装好的函数完成Http请求(三)

本文是针对AndBase框架学习整理的第三篇笔记,想要了解AndBase框架的朋友可以阅读本文,大家共同学习. 学习内容: 1.使用AndBase框架实现无参Http Get请求... 2.使用AndBase框架实现有参Http Post请求... 3.使用AndBase框架实现有参Http Get请求... AndBase框架为我们提供了一些相关的方法提供给我们使用,用来完成Http网络请求...总体就是对Http请求的一个封装,不过个人认为,网络请求这一模块更加推荐使用Volley框架..楼

文本框获取焦点并弹出下拉框

  html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页</title> </head> <body> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td>所属区域</td> &

jquery 弹出对话框确认框插件

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>qq弹出框</title&g

Android AndBase框架实现多功能标题栏(一)_Android

本文是针对AndBase框架学习整理的第一篇笔记,想要了解AndBase框架的朋友可以阅读本文,大家共同学习. 1.使用AndBase实现多功能标题栏 AndBase框架内部提供了许多的方式能够使我们去设置一个更好的标题栏,进行动态的改变,而并非静态的将标题栏界面写死...能够使得标题栏更加的美观...总体就是动态的获取布局然后通过对布局的操作来自定义一个良好的标题栏... 使用AndBase框架的时候我们的主函数就不是继承于Acticity了,而是继承于AbActivity,万变不离其宗还是A

Android AndBase框架实现多功能标题栏(一)

本文是针对AndBase框架学习整理的第一篇笔记,想要了解AndBase框架的朋友可以阅读本文,大家共同学习. 1.使用AndBase实现多功能标题栏 AndBase框架内部提供了许多的方式能够使我们去设置一个更好的标题栏,进行动态的改变,而并非静态的将标题栏界面写死...能够使得标题栏更加的美观...总体就是动态的获取布局然后通过对布局的操作来自定义一个良好的标题栏... 使用AndBase框架的时候我们的主函数就不是继承于Acticity了,而是继承于AbActivity,万变不离其宗还是A

android录音时弹出权限选择框影响录音动画显示问题

问题描述 android录音时弹出权限选择框影响录音动画显示问题 最近做个即时通讯的项目,里面支持语音聊天,实现起来蛮简单的,就是当长按录音按钮,进行录音,并弹出dialog显示录音动画,松开按钮结束录音.在手机上运行时,手机会有各种的权限提示dialog,而且我的录音按钮是响应的onTouch事件,所以就造成我的按钮在onkeydown时去初始化录音并显示dialog动画时,权限Dailog弹出,我的界面控件失去焦点,当我去选择权限时,控件无法捕获onkeyup或者onkeymove事件,不能

页面上弹出保存提示框的实现

问题描述 页面上弹出保存提示框的实现 我想按一个保存按钮,弹出一个保存提示框,可以选择路径和输入一个文件的名字.请问该如何实现?补充一下,是在页面上的. 解决方案 如果是 Windows MFC 编程可以参考:MFC打开/保存文件对话框:CFileDialog 如果是其它平台,这就不好说了,看系统是否提供如上类似的对话框?如果没有,就只能自己实现. 解决方案二: 用公用对话框,各种语言有封装,比如 CFileDialog FileSaveDialog CommonDialog TSaveDial

IE中使用ajaxSubmit上传文件弹出下载提示框

使用jQuery的ajaxSubmit 上传文件时,在IE中会弹出下载提示框:  页面代码: Js代码   var options = {                  url: "<%=path%>/upload/upload",                  type: "POST",                  dataType:'html',                  success:function(json) {