欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿微信网络加载弹出框

程序员文章站 2022-10-13 09:40:48
本文实例为大家分享了android仿微信网络加载弹出框的具体代码,供大家参考,具体内容如下 没有饿了么的动画效果好看,但是,特别适用,拿来就用! 看一下效果图 图...

本文实例为大家分享了android仿微信网络加载弹出框的具体代码,供大家参考,具体内容如下

没有饿了么的动画效果好看,但是,特别适用,拿来就用!

看一下效果图

Android仿微信网络加载弹出框

图片素材

Android仿微信网络加载弹出框

好了,其实很简单,就是一个自定义dialog的控件而已

1. 自定义view的style样式

<resources>

  <!-- base application theme. -->
  <style name="apptheme" parent="theme.appcompat.light.darkactionbar">
    <!-- customize your theme here. -->
    <item name="colorprimary">@color/colorprimary</item>
    <item name="colorprimarydark">@color/colorprimarydark</item>
    <item name="coloraccent">@color/coloraccent</item>
  </style>
  <!-- 自定义dialog的样式 -->
  <style name="customdialog">
    <item name="android:windowframe">@null</item><!--边框-->
    <item name="android:windowisfloating">true</item><!--是否浮现在activity之上-->
    <item name="android:windowistranslucent">false</item><!--半透明-->
    <item name="android:windownotitle">true</item><!--无标题-->
    <item name="android:windowbackground">@drawable/dialog_custom_bg</item><!--背景透明-->
    <item name="android:backgrounddimenabled">false</item><!--模糊-->
    <item name="android:backgrounddimamount">0.6</item>
  </style>


</resources>

2.dialog_custom_bg 加载动画shape背景图(drawable文件夹下)

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <solid android:color="#ff333333" />
  <corners android:radius="5dp" />
</shape>

3.indeterminate_drawable 进度条模糊背景图(drawable文件夹下)

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
  android:drawable="@drawable/loading"
  android:fromdegrees="0"
  android:pivotx="50%"
  android:pivoty="50%"
  android:todegrees="360">
</rotate>

4.加载对话框的背景

<!-- 加载对话框布局 -->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:orientation="horizontal"
  android:padding="10dp">

  <progressbar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminatedrawable="@drawable/indeterminate_drawable"
    android:indeterminateduration="1800" />

  <textview
    android:id="@+id/tvcontent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingleft="10dp"
    android:paddingright="10dp"
    android:text="加载中"
    android:textcolor="#ffffff"
    android:textsize="14sp" />

</linearlayout>

5.customdialog自定义控件

public class customdialog extends dialog {
  private string content;

  public customdialog(context context, string content) {
    super(context, r.style.customdialog);
    this.content=content;
    initview();
  }

  @override
  public boolean onkeydown(int keycode, keyevent event) {
    switch (keycode){
      case keyevent.keycode_back:
        if(customdialog.this.isshowing())
          customdialog.this.dismiss();
        break;
    }
    return true;
  }

  private void initview(){
    setcontentview(r.layout.dialog_view);
    ((textview)findviewbyid(r.id.tvcontent)).settext(content);
    setcanceledontouchoutside(true);
    windowmanager.layoutparams attributes = getwindow().getattributes();
    attributes.alpha=0.8f;
    getwindow().setattributes(attributes);
    setcancelable(false);
  }
}

6.activity中直接调用

customdialog customdialog = new customdialog(this, "正在加载...");
customdialog.show();//显示,显示时页面不可点击,只能点击返回
customdialog.dismiss();//消失

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