android 自定义loading动画

本文详细介绍了如何在Android应用中实现一个加载对话框,包括布局设计、动画效果和样式定制,旨在提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、LoadingDialog.java

/**
 * 
 */
package com.egreat.db;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
import android.util.Log;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.jrm.localmm.R;

/**
 * @author peter.wen
 *
 */
public class LoadingDialog {

	private Context mContext;
	
	Dialog loadingDialog;
	
	
	public LoadingDialog(Context mContext) {
		
		this.mContext = mContext ;
		
		LayoutInflater inflater = LayoutInflater.from(mContext);
		View v = inflater.inflate(R.layout.loading, null);
		FrameLayout layout = (FrameLayout) v.findViewById(R.id.dialog_view);
		
		ImageView wLoading = (ImageView) v.findViewById(R.id.loading);		
        wLoading.setBackgroundResource(R.drawable.loading_animation);
        AnimationDrawable ad=(AnimationDrawable) wLoading.getBackground();
        ad.start();
        

		loadingDialog = new Dialog(mContext, R.style.dialog);

		loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.MATCH_PARENT,
				LinearLayout.LayoutParams.MATCH_PARENT));
		
		   Window dialogWindow = loadingDialog.getWindow();
           WindowManager.LayoutParams lp = dialogWindow.getAttributes();
           dialogWindow.setGravity(Gravity.CENTER);
           Display display = dialogWindow.getWindowManager().getDefaultDisplay();
           Point point = new Point();
       	   display.getSize(point); // 宽度
       	
           lp.height = point.y; // 高度
           lp.width = point.x;
           
           dialogWindow.setAttributes(lp);
		
	}

	public void show(){
		
		loadingDialog.show();
	}
	
	public void dismiss(){
		
		loadingDialog.dismiss();
	}
	
	public boolean isShowing()
	{
		return loadingDialog.isShowing();
	}

}

2、loading.xml 放在layout目录下

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialog_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <ImageView
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/loading_animation" />

</FrameLayout>

3、loading_animation.xml 放在drawable目录下

<?xml version="1.0" encoding="utf-8"?>
<animation-list
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
    <item android:drawable="@drawable/loading_1" android:duration="200" />
    <item android:drawable="@drawable/loading_2" android:duration="200" />
    <item android:drawable="@drawable/loading_3" android:duration="200" />
    <item android:drawable="@drawable/loading_4" android:duration="200" />
    <item android:drawable="@drawable/loading_5" android:duration="200" />
    <item android:drawable="@drawable/loading_6" android:duration="200" />
    <item android:drawable="@drawable/loading_7" android:duration="200" />
    <item android:drawable="@drawable/loading_8" android:duration="200" />
</animation-list>

4、styles.xml 放在values目录下

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="dialog" parent="@android:style/Theme.Dialog">
        <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:background">@null</item>
        <item name="android:windowBackground">@drawable/set_bg</item>
        <item name="android:backgroundDimEnabled">false</item> <!-- 模糊 -->
    </style>
    
        <!--对话框风格  -->
    <style name="dialog_no_white" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <!-- <item name="android:background">@android:color/black</item> -->
        <item name="android:windowBackground">@color/black</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

    <style name="choose_time_dialog" parent="@android:style/Theme.Dialog">
        <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:background">@null</item>
        <item name="android:backgroundDimEnabled">false</item> <!-- 模糊 -->
    </style>
    
	<style name="video_menubg">        	
        	<item name="android:layout_width">fill_parent</item>
            <item name="android:layout_height">fill_parent</item>
      		<item name="android:layout_marginLeft">39dp</item>
		    <item name="android:layout_marginTop">39dp</item>
		    <item name="android:layout_marginRight">39dp</item>
		    <item name="android:layout_marginBottom">39dp</item>  
		    <item name="android:background">#00634e</item>  	
		    <item name="android:paddingLeft">10dp</item>  
		    <item name="android:paddingRight">10dp</item>  
        
    </style>
    
	<style name="menuList">	 
	    <item name ="android:listSelector">@drawable/set_button</item> 
	    <item name="android:scrollbarThumbVertical">@drawable/indicate</item>
  	    <item name="android:scrollbarTrackVertical">@drawable/indicatebg</item>
	
	</style>
	 <style name="InstallDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>
	
</resources>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值