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

Android如何自定義升級(jí)對(duì)話框示例詳解

 更新時(shí)間:2017年08月24日 08:27:32   作者:葉應(yīng)是葉  
對(duì)話框是我們?cè)谄綍r(shí)經(jīng)常會(huì)遇到的一個(gè)功能,但自帶的對(duì)話框不夠美觀,大家一般都會(huì)自定義,下面這篇文章主要給大家介紹了關(guān)于Android如何自定義升級(jí)對(duì)話框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

本文主要給大家介紹了關(guān)于Android自定義升級(jí)對(duì)話框的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

實(shí)現(xiàn)的效果如下所示


其實(shí)這也只是一個(gè)DialogFragment 而已,重點(diǎn)只是在于界面的設(shè)計(jì)

想要使用做出這樣一個(gè)DialogFragment ,需要自定義一個(gè)View,然后將該View傳入到該Dialog中

先定義布局,一個(gè)TextView用于標(biāo)題,一個(gè)TextView用于升級(jí)內(nèi)容闡述,一個(gè)ImageView,一個(gè)確認(rèn)升級(jí)的按鈕

<?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="match_parent"
 android:orientation="vertical">

 <TextView
 android:id="@+id/tv_title"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="20dp"
 android:gravity="center"
 android:textColor="#0474dc"
 android:textSize="22sp"
 android:textStyle="bold" />

 <TextView
 android:id="@+id/tv_description"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="15dp"
 android:gravity="center"
 android:textColor="#0474dc"
 android:textSize="18sp" />

 <ImageView
 android:layout_width="70dp"
 android:layout_height="70dp"
 android:layout_gravity="center"
 android:layout_marginBottom="20dp"
 android:layout_marginTop="20dp"
 android:src="@drawable/upgrade" />

 <Button
 android:id="@+id/btn_upgrade"
 style="@style/blueButtonStyle"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginBottom="20dp"
 android:layout_marginEnd="20dp"
 android:layout_marginStart="20dp"
 android:gravity="center"
 android:text="立即更新" />

</LinearLayout>

當(dāng)中,按鈕需要用到自定義Style

 <!--用于按鈕的藍(lán)色背景風(fēng)格-->
 <style name="blueButtonStyle" parent="Widget.AppCompat.Button.Borderless">
 <item name="android:background">@drawable/button_blue_background</item>
 <item name="android:textAppearance">@style/blueButtonTextStyle</item>
 </style>
 <!--用于藍(lán)色風(fēng)格按鈕的文本風(fēng)格-->
 <style name="blueButtonTextStyle">
 <item name="android:textColor">@android:color/white</item>
 <item name="android:textSize">17sp</item>
 </style>

建立 DialogFragment 的子類

/**
 * 作者: 葉應(yīng)是葉
 * 時(shí)間: 2017/3/23 12:36
 * 描述:
 */
public class VersionDialogFragment extends DialogFragment {

 private static final String TITLE = "title";

 private static final String DESCRIPTION = "description";

 private View.OnClickListener positiveCallback;

 private String title;

 private String description;

 public static VersionDialogFragment getInstance(String title, String description) {
  Bundle bundle = new Bundle();
  bundle.putString(TITLE, title);
  bundle.putString(DESCRIPTION, description);
  VersionDialogFragment versionDialogFragment = new VersionDialogFragment();
  versionDialogFragment.setArguments(bundle);
  return versionDialogFragment;
 }

 @Override
 public void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Bundle bundle = getArguments();
  title = bundle.getString(TITLE);
  description = bundle.getString(DESCRIPTION);
 }

 public void show(FragmentManager fragmentManager, View.OnClickListener positiveCallback) {
  this.positiveCallback = positiveCallback;
  show(fragmentManager, "VersionDialogFragment");
 }

 @NonNull
 @Override
 public Dialog onCreateDialog(Bundle savedInstanceState) {
  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  LayoutInflater inflater = getActivity().getLayoutInflater();
  final View view = inflater.inflate(R.layout.version_dialog, null);
  TextView tv_title = (TextView) view.findViewById(R.id.tv_title);
  TextView tv_description = (TextView) view.findViewById(R.id.tv_description);
  Button btn_upgrade = (Button) view.findViewById(R.id.btn_upgrade);
  tv_title.setText(title);
  tv_description.setText(description);
  btn_upgrade.setOnClickListener(positiveCallback);
  builder.setView(view);
  return builder.create();
 }

}

然后再到 MainActivity 中調(diào)用Dialog

public void showDialog(View view) {
  final VersionDialogFragment dialogFragment = VersionDialogFragment.getInstance("2.0.1新版本發(fā)布啦", "更多功能等你體驗(yàn)");
  dialogFragment.show(getSupportFragmentManager(), new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    Toast.makeText(MainActivity.this, "進(jìn)行更新操作吧", Toast.LENGTH_SHORT).show();
    dialogFragment.dismiss();
   }
  });
 }

此時(shí)界面是這樣的


可以看到 Dialog 中有較大的空白區(qū),顯得有點(diǎn)虛浮

這里可以選擇在 VersionDialogFragment 的 onStart() 方法中指定 Dialog 所占屏幕寬度的比例

 @Override
 public void onStart() {
  super.onStart();
  Dialog dialog = getDialog();
  if (dialog != null) {
   DisplayMetrics dm = new DisplayMetrics();
   getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
   if (dialog.getWindow() != null) {
    dialog.getWindow().setLayout((int) (dm.widthPixels * 0.7), ViewGroup.LayoutParams.WRAP_CONTENT);
   }
  }
 }

這里設(shè)置占據(jù)屏幕寬度的百分之七十

效果圖如下所示


此時(shí) Dialog 的四個(gè)角還都是直的,這里再來將之修改為圓角

在drawable文件夾下新建一個(gè)root.xml文件,作為Dialog使用到的布局的根Layout的背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
 <corners android:radius="20dp" />
 <solid android:color="#ffffff" />
</shape>
 @Override
 public void onStart() {
  super.onStart();
  Dialog dialog = getDialog();
  if (dialog != null) {
   DisplayMetrics dm = new DisplayMetrics();
   getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
   if (dialog.getWindow() != null) {
    dialog.getWindow().setLayout((int) (dm.widthPixels * 0.8), ViewGroup.LayoutParams.WRAP_CONTENT);
   }
  }
 }

然后再修改onStart()方法,為Dialog的Window設(shè)置透明背景色

 @Override
 public void onStart() {
  super.onStart();
  Dialog dialog = getDialog();
  if (dialog != null) {
   DisplayMetrics dm = new DisplayMetrics();
   getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
   if (dialog.getWindow() != null) {
    dialog.getWindow().setLayout((int) (dm.widthPixels * 0.7), ViewGroup.LayoutParams.WRAP_CONTENT);
    dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
   }
  }
 }

這樣,總的效果就都完成了

這里提供示例代碼下載:Android 自定義升級(jí)對(duì)話框

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開發(fā)者們的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android中Glide加載圓形圖片和圓角圖片實(shí)例代碼

    Android中Glide加載圓形圖片和圓角圖片實(shí)例代碼

    本篇文章主要介紹了Android中Glide加載圓形圖片和圓角圖片實(shí)例代碼,具體一定的參考價(jià)值,有興趣的可以了解一下
    2017-05-05
  • Android使用GestureOverlayView控件實(shí)現(xiàn)手勢(shì)識(shí)別

    Android使用GestureOverlayView控件實(shí)現(xiàn)手勢(shì)識(shí)別

    這篇文章主要為大家詳細(xì)介紹了Android使用GestureOverlayView控件實(shí)現(xiàn)手勢(shì)識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android實(shí)現(xiàn)界面定時(shí)刷新功能

    Android實(shí)現(xiàn)界面定時(shí)刷新功能

    在移動(dòng)應(yīng)用中,界面定時(shí)刷新是非常常見的需求,本教程將以一個(gè)“實(shí)時(shí)時(shí)鐘”示例為主線,演示多種常用的定時(shí)刷新的實(shí)現(xiàn)方式,并對(duì)比它們的代碼簡(jiǎn)潔度、性能消耗、生命周期管理與取消機(jī)制,幫助您在項(xiàng)目中快速選型并上手,需要的朋友可以參考下
    2025-04-04
  • Android適配利用webview加載后圖片顯示過大的問題解決

    Android適配利用webview加載后圖片顯示過大的問題解決

    這篇文章主要給大家介紹了關(guān)于Android適配利用webview加載后圖片顯示過大問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Android監(jiān)聽橫豎屏切換功能

    Android監(jiān)聽橫豎屏切換功能

    在這篇文章主要介紹了Android監(jiān)聽橫豎屏切換功能,非常不錯(cuò),代碼簡(jiǎn)單易懂,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Android應(yīng)用自動(dòng)更新功能實(shí)現(xiàn)的方法

    Android應(yīng)用自動(dòng)更新功能實(shí)現(xiàn)的方法

    這篇文章主要為大家詳細(xì)介紹了Android應(yīng)用自動(dòng)更新功能實(shí)現(xiàn)的方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android從網(wǎng)絡(luò)中獲得一張圖片并顯示在屏幕上的實(shí)例詳解

    Android從網(wǎng)絡(luò)中獲得一張圖片并顯示在屏幕上的實(shí)例詳解

    這篇文章主要介紹了Android從網(wǎng)絡(luò)中獲得一張圖片并顯示在屏幕上的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • Android 如何在私有空間創(chuàng)建文件

    Android 如何在私有空間創(chuàng)建文件

    在Android應(yīng)用程序中,我們經(jīng)常需要在私有空間中創(chuàng)建文件來存儲(chǔ)應(yīng)用數(shù)據(jù),例如用戶配置文件、日志文件等,本文將介紹如何在Android應(yīng)用中使用Java代碼創(chuàng)建文件并將其保存在私有空間中,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Android實(shí)現(xiàn)View滑動(dòng)的6種方式

    Android實(shí)現(xiàn)View滑動(dòng)的6種方式

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)View滑動(dòng)的6種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解Android截屏事件監(jiān)聽

    詳解Android截屏事件監(jiān)聽

    本篇文章主要介紹了Android截屏事件監(jiān)聽,Android系統(tǒng)沒有直接對(duì)截屏事件監(jiān)聽的接口,本文介紹了2種方法,有興趣的可以了解一下。
    2016-12-12

最新評(píng)論

迁西县| 勐海县| 建水县| 尚志市| 莱州市| 南平市| 西平县| 北京市| 台东县| 手机| 隆林| 手机| 莆田市| 陆河县| 游戏| 平阳县| 财经| 西安市| 庆元县| 汽车| 西丰县| 阜新市| 云林县| 缙云县| 盘山县| 滦南县| 云南省| 古浪县| 偏关县| 楚雄市| 吉安市| 竹溪县| 夹江县| 达州市| 大城县| 柯坪县| 抚州市| 韩城市| 尤溪县| 越西县| 苗栗市|