• Android仿微信进度弹出框的实现方法


    MainActivity:

    package com.ruru.dialogproject; 
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    public class MainActivity extends Activity implements Runnable { 
     LoadingDialog dialog; 
     @Override
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      findViewById(R.id.btn_name).setOnClickListener(new View.OnClickListener() { 
       @Override
       public void onClick(View view) { 
        dialog = new LoadingDialog(MainActivity.this); 
        dialog.setCanceledOnTouchOutside(false); 
        dialog.show(); 
        new Thread(MainActivity.this).start(); 
       } 
      }); 
     } 
     public void run() { 
      try { 
       Thread.sleep(5000); 
       dialog.dismiss(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }

    activity_main:

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/activity_main"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context="com.ruru.dialogproject.MainActivity"> 
     <Button 
      android:id="@+id/btn_name"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="Hello World!" /> 
    </RelativeLayout>

    LoadingDialog:

    package com.ruru.dialogproject; 
    import android.app.Dialog; 
    import android.content.Context; 
    import android.os.Bundle; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 
    /** 
     * Created by 27c1 on 2017/1/4. 
     */
    public class LoadingDialog extends Dialog { 
     private TextView tv; 
     /** 
      * style很关键 
      */
     public LoadingDialog(Context context) { 
      super(context, R.style.loadingDialogStyle); 
     } 
     @Override
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.dialog_loading); 
      tv = (TextView) findViewById(R.id.tv); 
      tv.setText("正在上传....."); 
      LinearLayout linearLayout = (LinearLayout) this.findViewById(R.id.LinearLayout); 
      linearLayout.getBackground().setAlpha(210); 
     } 
    }

    dialog_loading:

    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="@android:color/transparent"
     android:orientation="vertical"> 
     <LinearLayout 
      android:id="@+id/LinearLayout"
      android:layout_width="160dp"
      android:layout_height="160dp"
      android:background="@drawable/yuanjiao"
      android:gravity="center"
      android:orientation="vertical"> 
      <ProgressBar 
       android:id="@+id/progressBar1"
       style="?android:attr/progressBarStyleInverse"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:background="@android:color/transparent" /> 
      <TextView 
       android:id="@+id/tv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:paddingTop="10dp"
       android:textColor="#fff" /> 
     </LinearLayout> 
    </LinearLayout>
     

    R.style.loadingDialogStyle:

    <style name="loadingDialogStyle" parent="android:Theme.Dialog"> 
      <item name="android:windowBackground">@android:color/transparent</item><!--设置dialog的背景--> 
      <item name="android:windowFrame">@null</item><!--Dialog的windowFrame框为无--> 
      <item name="android:windowNoTitle">true</item><!--是否显示title--> 
      <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> 
      <item name="android:windowIsTranslucent">true</item><!--是否半透明--> 
      <item name="android:windowContentOverlay">@null</item><!--是否半透明--> 
      <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item><!-- 对话框是否有遮盖 --> 
      <item name="android:backgroundDimEnabled">false</item><!--背景是否模糊显示--> 
      <item name="android:backgroundDimAmount">0.6</item><!--背景的灰度--> 
     </style>

    drawable-yuanjiao:

    <?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
     <solid android:color="#86222222" /> 
     <corners 
      android:bottomLeftRadius="10dp"
      android:bottomRightRadius="10dp"
      android:topLeftRadius="10dp"
      android:topRightRadius="10dp" /> 
    </shape>
     

    效果:

    关于样式:

    <item name="android:windowFrame">@null</item> :Dialog的windowFrame框为无 
    <item name="android:windowIsFloating">true</item>:是否浮现在activity之上 
    <item name="android:windowIsTranslucent">false</item>:是否半透明 
    <item name="android:windowNoTitle">true</item>:是否显示title 
    <item name="android:windowBackground">@drawable/dia_bg</item>:设置dialog的背景 
    <item name="android:backgroundDimEnabled">true</item>背景是否模糊显示 
    <item name="android:backgroundDimAmount">0.6</item>背景的灰度

    Window attributes属性详解

  • 相关阅读:
    HDU 3342 Legal or Not
    POJ 3723 Conscription
    HDU 1102 Constructing Roads
    题目1545:奇怪的连通图
    面向对象程序设计寒假作业2(实践题)
    面向对象程序设计寒假作业2(编程题1)
    面向对象程序设计寒假作业1
    面向对象程序设计寒假作业1(编程题)
    面向对象程序设计寒假作业1(实践题)
    面向对象程序设计寒假作业1(问答题)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7407091.html
Copyright © 2020-2023  润新知