zoukankan      html  css  js  c++  java
  • 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属性详解

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7407091.html
Copyright © 2011-2022 走看看