最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android AndBase框架內(nèi)部封裝實(shí)現(xiàn)進(jìn)度框、Toast框、彈出框、確認(rèn)框(二)

 更新時(shí)間:2016年03月30日 16:28:03   作者:Darker  
這篇文章主要介紹了Android AndBase框架使用AbActivity內(nèi)部封裝實(shí)現(xiàn)進(jìn)度框、Toast框、彈出框、確認(rèn)框,感興趣的小伙伴們可以參考一下

本文是針對(duì)AndBase框架學(xué)習(xí)整理的第二篇筆記,想要了解AndBase框架的朋友可以閱讀本文,大家共同學(xué)習(xí)。

使用AbActivity內(nèi)部封裝的方法實(shí)現(xiàn)進(jìn)度框,Toast框,彈出框,確認(rèn)框

AndBase中AbActivity封裝好了許多方法提供我們?nèi)ナ褂?,使得在使用的時(shí)候更加的方便,只需要傳遞相關(guān)參數(shù)即可..省去了我們自己使用基礎(chǔ)的函數(shù)進(jìn)行構(gòu)造...

就好比進(jìn)度框,Toast框,彈出框,確認(rèn)框...這些基本的東西都在AndBase的AbActivity封裝好了...我們只需要傳遞參數(shù)調(diào)用其中內(nèi)部的方法就可以完成這些視圖的創(chuàng)建...無(wú)論是進(jìn)度條的調(diào)用,還是Toast框,還是彈出框,確認(rèn)框(確認(rèn)框和彈出框基本相似),只是確認(rèn)框比彈出框多了一些相關(guān)控件而已,彈出框一般用于直接彈出一段文本信息,而去確認(rèn)框則還需要添加相關(guān)的按鈕...總之調(diào)用的方式也就非常的簡(jiǎn)單...

/*
 * 
 * 多功能菜單...
 * 
 * */
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的定義一定要有一定的規(guī)則...
  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(); //直接彈出圓形進(jìn)度框...
  break;
 case R.id.but_1:
  showToast("Toast文本框"); //Toast文本框...
  break;
 case R.id.but_2:
  showDialog(AbConstant.DIALOGTOP, view); //彈出框..傳遞參數(shù)為顯示的位置以及顯示的視圖...這里表示在最上方彈出...
  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:
   //可以看到確認(rèn)框也是調(diào)用showDialog方法..只是傳遞的參數(shù)不相同..AbActivity也針對(duì)這幾種不同的彈出框定義了不同的方法...
  showDialog("標(biāo)題", "描述", new OnClickListener() {
  
  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   showToast("點(diǎn)擊確認(rèn)");
  }
  });
  break;
 }
 }

}

這里我們可以看到,只需要調(diào)用相關(guān)的方法,傳遞相關(guān)的參數(shù)就能夠完成這些基本View的創(chuàng)建..從而使得我們的操作更加的方便...

以前的Toast信息彈出框調(diào)用的方式:

Toast.makeText(getApplicationContext(),"需要想要顯示的信息",Toast.LENGTH).show();
 現(xiàn)在的方式就是這樣:

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

這樣直接就可以完成Toast信息框的顯示..對(duì)于這樣的簡(jiǎn)單方式的封裝,可能我們不以為然..但是如果是更多的代碼量呢?就拿我們的確認(rèn)彈出框來(lái)說(shuō)吧...如果是在以往的Activity中書(shū)寫(xiě)一個(gè)確認(rèn)彈出框,我們需要手動(dòng)去進(jìn)行重寫(xiě)...下面就是基于Activity來(lái)手寫(xiě)的一個(gè)確認(rèn)框...

AlertDialog.Builder builder=new Builder(MainActivity.this);
builder.setTitle("提示");
builder.setMessage("確認(rèn)退出");
builder.setPositiveButton("確認(rèn)", new OnClickListener() { //添加確認(rèn)按鈕...
  
  @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框架通過(guò)調(diào)用函數(shù)的方式,這樣就使得這個(gè)過(guò)程就非常的簡(jiǎn)單..我們只需要傳遞相關(guān)的參數(shù)調(diào)用方法就可以了...這個(gè)函數(shù)的調(diào)用和上面的書(shū)寫(xiě)方式所帶來(lái)的效果是相同的,并且這里我們不需要再設(shè)置dialog.dismiss();只要點(diǎn)擊了按鈕,那么彈出框就會(huì)消失...這里的OnClick方法是后續(xù)彈出框消失后需要執(zhí)行的操作...相比而言,使用框架還是簡(jiǎn)化了代碼量

showDialog("提示", "確認(rèn)退出", new OnClickListener() {
  
  @Override
  public void onClick(DialogInterface dialog, int which) {
   // TODO Auto-generated method stub
   showToast("點(diǎn)擊確認(rèn)");
  }
  });

其實(shí)這些簡(jiǎn)單的View還是非常的簡(jiǎn)單的...雖然看起來(lái)代碼量減少的并不是非常的多,但是如果對(duì)于更加復(fù)雜的操作...框架中優(yōu)化好的方法還是非常的好用的...即減少了代碼的冗余度,而且還實(shí)現(xiàn)了更多的功能...

  還是看一下源碼的實(shí)現(xiàn)過(guò)程吧...

 Toast框的源碼實(shí)現(xiàn)過(guò)程...我們可以看到,框架中的方法把原生態(tài)的方法進(jìn)行了封裝,我們只需要傳遞相關(guān)參數(shù)就可以直接使用Toast框...其實(shí)源碼內(nèi)部還有showToastInThread()的源碼..通過(guò)開(kāi)啟一個(gè)新的線程

/**
 * 描述:Toast提示文本.
 * @param text 文本
 */
 public void showToast(String text) {
 Toast.makeText(this,""+text, Toast.LENGTH_SHORT).show(); //這里已經(jīng)把這個(gè)方法封裝好了...我們只需要傳遞需要顯示的文本就行了...
 }
 
 /**
 * 描述:Toast提示文本.
 * @param resId 文本的資源ID
 */
 public void showToast(int resId) {
 Toast.makeText(this,""+this.getResources().getText(resId), Toast.LENGTH_SHORT).show(); //這種方法則是通過(guò)resID來(lái)設(shè)置需要顯示的文本...
 }

  進(jìn)度框的源碼實(shí)現(xiàn)過(guò)程...源碼非常的簡(jiǎn)單...我們?cè)谑褂靡粋€(gè)進(jìn)度條的時(shí)候只需要調(diào)用這兩種方法就可以了...

/**
 * 描述:顯示進(jìn)度框.
 */
 public void showProgressDialog() {
 showProgressDialog(null); //沒(méi)有顯示進(jìn)度的進(jìn)度框..
 }
 
 /**
 * 描述:顯示進(jìn)度框.
 * @param message the message
 */
 public void showProgressDialog(String message) {
 // 創(chuàng)建一個(gè)顯示進(jìn)度的Dialog
 if(!AbStrUtil.isEmpty(message)){
  mProgressMessage = message; //設(shè)置進(jìn)度框顯示的信息...
 }
 if (mProgressDialog == null) {
  mProgressDialog = new ProgressDialog(this);
  // 設(shè)置點(diǎn)擊屏幕Dialog不消失 
  mProgressDialog.setCanceledOnTouchOutside(false);
 }
 mProgressDialog.setMessage(mProgressMessage);//設(shè)置進(jìn)度框顯示的消息..
 showDialog(AbConstant.DIALOGPROGRESS);
 }

  彈出框的源碼我就不進(jìn)行粘貼了,由于源碼寫(xiě)的確實(shí)有點(diǎn)多...這里就只粘貼一下封裝的方法...

  這個(gè)方法顯示的對(duì)話框是一個(gè)信息彈出框,沒(méi)有按鈕,只是進(jìn)行信息的提示...id的作用設(shè)置彈出框顯示的位置...View表示需要顯示的視圖...這樣就創(chuàng)建了一個(gè)彈出框在指定的位置進(jìn)行顯示...

public void showDialog(int id,View view) {} 
  上面方法的執(zhí)行過(guò)程中,會(huì)調(diào)用setDialogLayoutParams()函數(shù)去設(shè)置相關(guān)屬性,設(shè)置彈出框布局的參數(shù),也就是彈出框如何在屏幕上更好的顯示的一個(gè)設(shè)置...

 這是源碼的調(diào)用過(guò)程,看起來(lái)并不是很難理解...

private void setDialogLayoutParams(Dialog dialog,int dialogPadding,int gravity){
 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //設(shè)置沒(méi)有標(biāo)題..
 Window window = dialog.getWindow(); //獲取窗口...
 WindowManager.LayoutParams lp = window.getAttributes();//獲取窗口屬性...
 //此處可以設(shè)置dialog顯示的位置
 window.setGravity(gravity); //設(shè)置窗口的對(duì)其方式...
 //設(shè)置寬度
 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); 
 // 添加動(dòng)畫(huà)
 window.setWindowAnimations(android.R.style.Animation_Dialog); 
 // 設(shè)置點(diǎn)擊屏幕Dialog不消失 
 dialog.setCanceledOnTouchOutside(false);

 }

這個(gè)方法的彈出框是一個(gè)帶有按鈕的確認(rèn)框,title和msg表示對(duì)話框的標(biāo)題內(nèi)容和提示內(nèi)容...以及點(diǎn)擊確認(rèn)按鈕時(shí)發(fā)生的監(jiān)聽(tīng)事件的傳遞...

public void showDialog(String title,String msg,DialogInterface.OnClickListener mOkOnClickListener) {} 
  這個(gè)方法的彈出框和上面的唯一區(qū)別就是,彈出框的內(nèi)容不是指定的字符串,而是一個(gè)我們自定義的一個(gè)視圖..

public AlertDialog showDialog(String title,View view,DialogInterface.OnClickListener mOkOnClickListener) {}
  彈出框基本都是這些模式...源碼的實(shí)現(xiàn)非常的簡(jiǎn)單...原理都是對(duì)那些基本函數(shù)的一些封裝...剩下的幾個(gè)就不粘貼了..萬(wàn)變不離其宗。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Android創(chuàng)建簡(jiǎn)單發(fā)送和接收短信應(yīng)用

    Android創(chuàng)建簡(jiǎn)單發(fā)送和接收短信應(yīng)用

    收發(fā)短信應(yīng)該是每個(gè)手機(jī)最基本的功能之一了,即使是許多年前的老手機(jī)也都會(huì)具備這項(xiàng)功能,而Android 作為出色的智能手機(jī)操作系統(tǒng),自然也少不了在這方面的支持。今天我們開(kāi)始自己創(chuàng)建一個(gè)簡(jiǎn)單的發(fā)送和接收短信的應(yīng)用,需要的朋友可以參考下
    2016-04-04
  • Android利用軟引用和弱引用避免OOM的方法

    Android利用軟引用和弱引用避免OOM的方法

    Java從JDK1.2版本開(kāi)始,就把對(duì)象的引用分為四種級(jí)別,從而使程序能更加靈活的控制對(duì)象的生命周期。這四種級(jí)別由高到低依次為:強(qiáng)引用、軟引用、弱引用和虛引用。本文給大家介紹Android利用軟引用和弱引用避免OOM,需要的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Android性能優(yōu)化之利用Rxlifecycle解決RxJava內(nèi)存泄漏詳解

    Android性能優(yōu)化之利用Rxlifecycle解決RxJava內(nèi)存泄漏詳解

    RxJava作為一種響應(yīng)式編程框架,是目前編程界網(wǎng)紅,可謂是家喻戶曉,其簡(jiǎn)潔的編碼風(fēng)格、易用易讀的鏈?zhǔn)椒椒ㄕ{(diào)用、強(qiáng)大的異步支持等使得RxJava被廣泛使用。
    2017-01-01
  • Android自定義View旋轉(zhuǎn)圓形圖片

    Android自定義View旋轉(zhuǎn)圓形圖片

    這篇文章主要為大家詳細(xì)介紹了Android自定義View旋轉(zhuǎn)圓形圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android WebView調(diào)用本地相冊(cè)的方法

    Android WebView調(diào)用本地相冊(cè)的方法

    這篇文章主要為大家詳細(xì)介紹了Android WebView調(diào)用本地相冊(cè)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 解決Android BitmapFactory的基本使用問(wèn)題

    解決Android BitmapFactory的基本使用問(wèn)題

    很多朋友給小編反饋使用方法BitmapFactory.decodeFile轉(zhuǎn)化Bitmap時(shí)報(bào)錯(cuò),究竟是什么原因?qū)е洛e(cuò)誤問(wèn)題呢?今天通過(guò)本文給大家介紹下解決Android BitmapFactory的基本使用問(wèn)題,感興趣的朋友一起看看吧
    2021-10-10
  • Android Dialog 對(duì)話框詳解及示例代碼

    Android Dialog 對(duì)話框詳解及示例代碼

    本文主要介紹Android Dialog,這里詳細(xì)介紹Android Dialog的基本使用方法,并提供了示例代碼和實(shí)現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • Android 自定義SeekBar動(dòng)態(tài)改變硬件音量大小實(shí)現(xiàn)和音量鍵的同步(推薦)

    Android 自定義SeekBar動(dòng)態(tài)改變硬件音量大小實(shí)現(xiàn)和音量鍵的同步(推薦)

    這篇文章主要介紹了 Android 自定義SeekBar動(dòng)態(tài)改變硬件音量大小實(shí)現(xiàn)和音量鍵的同步效果,整段代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • Android AlertDialog六種創(chuàng)建方式案例詳解

    Android AlertDialog六種創(chuàng)建方式案例詳解

    這篇文章主要介紹了Android AlertDialog六種創(chuàng)建方式案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android 10 啟動(dòng)之servicemanager源碼解析

    Android 10 啟動(dòng)之servicemanager源碼解析

    這篇文章主要為大家介紹了Android 10 啟動(dòng)之servicemanager源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評(píng)論

法库县| 桦南县| 乌苏市| 湘潭县| 五莲县| 舞阳县| 亳州市| 汕尾市| 井研县| 西充县| 黄梅县| 屏东县| 临漳县| 乌兰察布市| 景宁| 客服| 甘德县| 苗栗县| 平谷区| 乌鲁木齐市| 岑巩县| 翁源县| 乐山市| 上杭县| 神木县| 长顺县| 尼勒克县| 黄平县| 丹江口市| 安庆市| 吉木萨尔县| 开原市| 西宁市| 武鸣县| 炉霍县| 淮北市| 翁牛特旗| 西安市| 宁化县| 青阳县| 任丘市|