亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android實現類似iOS風格的對話框實例代碼

 更新時間:2017年09月18日 08:58:07   作者:敲代碼的鳥  
通過本文給大家分享一個簡單的常用的對話框類,關于Android實現類似iOS風格的對話框實例代碼大家通過本文學習下吧

分享一個簡單的常用的對話框類,按照國際慣例,先上圖

布局簡單,先上布局。一個標題,一個內容,兩個按鈕

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <LinearLayout
  android:layout_width="270dp"
  android:layout_height="wrap_content"
  android:layout_centerHorizontal="true"
  android:layout_centerVertical="true"
  android:background="@drawable/shape_diglog_bg"
  android:orientation="vertical">
  <TextView
   android:id="@+id/dialog_title"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:layout_marginTop="10dp"
   android:text="這里是標題"
   android:textColor="#333333"
   android:textSize="19sp"
   android:visibility="visible" />
  <TextView
   android:id="@+id/dialog_content"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:layout_marginBottom="30dp"
   android:layout_marginLeft="10dp"
   android:layout_marginRight="10dp"
   android:layout_marginTop="30dp"
   android:text="這里是內容"
   android:textColor="#333333"
   android:textSize="17sp"
   android:textStyle="bold" />
  <View
   android:layout_width="match_parent"
   android:layout_height="1dp"
   android:layout_marginTop="18sp"
   android:background="#f1f1f1" />
  <LinearLayout
   android:id="@+id/ll_button"
   android:layout_width="match_parent"
   android:layout_height="50dp"
   android:orientation="horizontal">
   <Button
    android:id="@+id/dialog_cancel"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@null"
    android:text="取消"
    android:textColor="#006DFF"
    android:textSize="17sp" />
   <View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="#f1f1f1" />
   <Button
    android:id="@+id/dialog_ensure"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@null"
    android:text="確定"
    android:textColor="#006DFF"
    android:textSize="17sp" />
  </LinearLayout>
 </LinearLayout>
</RelativeLayout>

接著就是自定義類!

首先,新建類繼承Dialog

public class CommonDialog extends Dialog

接著是構造函數,在構造函數中定義樣式

public CommonDialog(@NonNull Context context) {
  super(context, R.style.dialog_Common);
  mContext = context;
  setContentView(R.layout.dialog_common);
  ButterKnife.bind(this);
 }

其中,在style中定義對話框屬性

<style name="dialog_Common" parent="android:style/Theme.Dialog">
  <!--說明提示框是否有邊框-->
  <item name="android:windowFrame">@null</item>
  <!--說明提示框是否有標題-->
  <item name="android:windowNoTitle">true</item>
  <!--設置提示框的背景顏色是什么-->
  <item name="android:windowBackground">@android:color/transparent</item>
  <!--是否浮現在activity之上-->
  <item name="android:windowIsFloating">true</item>
  <!--是否有遮蓋-->
  <item name="android:windowContentOverlay">@null</item>
  <!--說明提示框是滯是透明的-->
  <item name="android:windowIsTranslucent">true</item>
  <!--說明是否充許對話框的背景變暗。為true則充許變暗-->
  <item name="android:backgroundDimEnabled">true</item>
  <!--設置背景透明度-->
  <item name="android:backgroundDimAmount">0.4</item>
 </style>

緊接著,提供四個變量來存儲設置的標題、內容以及兩個按鈕的文字

private String title;
private String content;
private String cancel;
private String ensure;

現在需要提供能夠設置標題、內容以及兩個按鈕的文字的方法

 /*
  * 設置標題 默認沒有標題
  *
  * @param title
  */ 
 public void setTitle(String title) {
  this.title = title;
 }
 /**
  * 設置內容 默認為空
  *
  * @param content
  */
 public void setContent(String content) {
  this.content = content;
 }
 /**
  * 設置確定按鈕內容 默認為確定
  *
  * @param ensure
  */
 public void setEnsure(String ensure) {
  this.ensure = ensure;
 }
 /**
  * 設置取消按鈕內容 默認為取消
  *
  * @param cancel
  */
 public void setCancel(String cancel) {
  this.cancel = cancel;
 }

現在,處理按鈕的點擊事件

/**
  * 確定按鈕事件監(jiān)聽 默認是dismiss對話框
  *
  * @param onEnsureClickListener
  */
 public void setOnEnsureClickListener(View.OnClickListener onEnsureClickListener) {
  this.onEnsureClickListener = onEnsureClickListener;
 }
 /**
  * 取消按鈕事件監(jiān)聽 默認是dismiss對話框
  *
  * @param onCabcelClickListener
  */
 public void setOnCancelClickListener(View.OnClickListener onCabcelClickListener) {
  this.onCancelClickListener = onCabcelClickListener;
 }

默認的是點擊對話框消失

 /**
  * 默認點擊事件,點擊彈框消失
  */
 private View.OnClickListener onClickListenerDismiss = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   dismiss();
  }
 };

最后,重寫父類的show方法,將展示之前設置的各種信息

/**
  * 重寫show方法
  */
 @Override
 public void show() {
  if (TextUtils.isEmpty(title)) {
   //默認沒有標題
   dialogTitle.setVisibility(View.GONE);
  } else {
   //默認不設置內容,則內容太為空
   dialogTitle.setVisibility(View.VISIBLE);
   setTextViewTxt(dialogTitle, title);
  }
  if (TextUtils.isEmpty(cancel)) {
   //默認取消按鈕文字為"取消"
   cancel = mContext.getString(R.string.cancel);
  }
  if (TextUtils.isEmpty(ensure)) {
   //默認確認按鈕文字為"確認"
   ensure = mContext.getString(R.string.ensure);
  }
  //設置文字信息
  setTextViewTxt(dialogContent, content);
  setTextViewTxt(dialogCancel, cancel);
  setTextViewTxt(dialogEnsure, ensure);
   //設置點擊事件
  setButtonOnClickListener(dialogCancel, onCancelClickListener);
  setButtonOnClickListener(dialogEnsure, onEnsureClickListener);
  super.show();
 }

最最后,獻上在Activity中如何使用該對話框的方法的代碼

public class MainActivity extends AppCompatActivity {
 @BindView(R.id.btn_demo_haveTitle)
 Button btnDemoHaveTitle;
 @BindView(R.id.btn_demo_noTitle)
 Button btnDemoNoTitle;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
  ButterKnife.bind(this);
 }
 @OnClick({R.id.btn_demo_haveTitle, R.id.btn_demo_noTitle})
 public void onClick(View view) {
  switch (view.getId()) {
   //沒有標題的對話框
   case R.id.btn_demo_haveTitle:
    final CommonDialog dialog1 = new CommonDialog(this);
    dialog1.setTitle("提示");
    dialog1.setContent("是否確認退出?");
    dialog1.setOnEnsureClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
      Toast.makeText(MainActivity.this,"點擊了確認",Toast.LENGTH_SHORT).show();
      // TODO: 2017/9/17 這里寫你的代碼
      dialog1.dismiss();
     }
    });
    dialog1.show();
    break;
   //有標題的對話框
   case R.id.btn_demo_noTitle:
    final CommonDialog dialog2 = new CommonDialog(this);
    //不設置標題默認沒有標題
    dialog2.setContent("是否確認退出?");
    dialog2.setOnEnsureClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
      Toast.makeText(MainActivity.this,"點擊了確認",Toast.LENGTH_SHORT).show();
      // TODO: 2017/9/17 這里寫你的代碼
      dialog2.dismiss();
     }
    });
    dialog2.show();
    break;
  }
 }
}

總結

以上所述是小編給大家介紹的Android實現類似iOS風格的對話框樣式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Android實現去哪兒攜程地址互換效果

    Android實現去哪兒攜程地址互換效果

    這篇文章主要為大家詳細介紹了Android實現去哪兒攜程地址互換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳談Android中Matrix的set、pre、post的區(qū)別

    詳談Android中Matrix的set、pre、post的區(qū)別

    下面小編就為大家?guī)硪黄斦凙ndroid中Matrix的set、pre、post的區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android中ViewFlipper和AdapterViewFlipper使用的方法實例

    Android中ViewFlipper和AdapterViewFlipper使用的方法實例

    ViewFlipper和AdapterViewFlipper是Android自帶的一個多頁面管理控件,下面這篇文章主要給大家介紹了關于Android中ViewFlipper和AdapterViewFlipper使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Android ListView實現仿iPhone實現左滑刪除按鈕的簡單實例

    Android ListView實現仿iPhone實現左滑刪除按鈕的簡單實例

    下面小編就為大家?guī)硪黄狝ndroid ListView實現仿iPhone實現左滑刪除按鈕的簡單實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Android學習之本地廣播使用方法詳解

    Android學習之本地廣播使用方法詳解

    這篇文章主要為大家詳細介紹了Android學習之本地廣播使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 使用Flutter 構建Web應用邏輯解析

    使用Flutter 構建Web應用邏輯解析

    這篇文章主要為大家介紹了使用Flutter 構建Web應用邏輯解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 從零開始學android實現計算器功能示例分享(計算器源碼)

    從零開始學android實現計算器功能示例分享(計算器源碼)

    這篇文章主要介紹了android實現的計算器功能示例,可以加減乘除;可以倒退,可以清空文本,大家參考使用吧
    2014-02-02
  • Android編程獲取sdcard卡信息的方法

    Android編程獲取sdcard卡信息的方法

    這篇文章主要介紹了Android編程獲取sdcard卡信息的方法,可實現獲取sdcard總容量、剩余容量等功能,涉及Android針對sdcard進程操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 常用Android布局文件優(yōu)化技巧總結

    常用Android布局文件優(yōu)化技巧總結

    Android布局加載是Android應用程序的重要組成部分,布局加載是指將 XML文件中定義的視圖層次結構加載到內存中,在這篇文章中,我們將深入探討 Android 布局加載的原理,包括 Android 布局文件的結構和布局文件的常見問題等方面,需要的朋友可以參考下
    2023-07-07
  • Mac下完全卸載干凈Android Studio的方法

    Mac下完全卸載干凈Android Studio的方法

    這篇文章主要介紹了Mac下完全卸載干凈Android Studio的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論