上图是dialog的效果图,以下为代码:
Java类:
package com.jmheart.mechanicsbao.ui.util;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.TextView;
import com.jmheart.mechanicsbao.R;
/**
* 作者:chenqian on 2017/4/20 0020 13:56
* 邮箱: hin130@163.com
*/
public class ProgressDialog extends AlertDialog {
private String messageT="正在加载...";
public ProgressDialog(Context context) {
super(context,R.style.AppCompatAlertDialogStyle);
}
public ProgressDialog(Context context,int themeResId) {
super(context,themeResId);
}
public ProgressDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressdialog);
((TextView) findViewById(R.id.message)) .setText(messageT);
}
public void setMessage(String str){
if(!TextUtils.isEmpty(str)){
messageT=str;
}
}
public void setOutside(boolean out){
this.setCanceledOnTouchOutside(out);
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:background="@drawable/progressdialog"
android:baselineAligned="false"
android:paddingStart="25dp"
android:paddingTop="20dp"
android:paddingEnd="25dp"
android:paddingBottom="20dp">
<ProgressBar android:id="@android:id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="10000"
/>
<TextView android:id="@+id/message"
android:layout_width="wrap_content"
android:text="正在加载..."
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:textColor="#d9d9d9"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
</LinearLayout>
</FrameLayout>
选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="10dp"></corners>
<solid android:color="#80000000"></solid>
</shape>
</item>
</selector>
style代码
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
定制款loading对话框:
效果如上,图片可以网上自己找,改一下图片资源即可
下面附上代码:
java代码:
/**
* 得到自定义的progressDialog
* @param context
* @return
*/
public Dialog createLoadingDialog(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.loading_dialog, null,false);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.layout_dialog_view);// 加载布局
// main.xml中的ImageView
ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img);
// 加载动画
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(
context, R.anim.loading_animation);
// 使用ImageView显示动画
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog
/*
Display display = this.getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();*/
//loadingDialog.setCancelable(false);// 不可以用“返回键”取消
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));// 设置布局
return loadingDialog;
}
xml代码:
layout.loading_dialog:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_dialog_view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="60dp"
android:minWidth="180dp"
android:gravity="center"
android:padding="10dp"
android:background="@color/colorwhite"
>
<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_loading"
/>
</LinearLayout>
anim.loading_animation
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1500"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="-1"
android:repeatMode="restart"
android:startOffset="-1"
android:toDegrees="+360">
</rotate>
style.loading_dialog
<!-- style for loading dialog @{ -->
<style name="loading_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<!-- @} -->
如果有疑问请在帖子底下留言,楼主很尽快回复的!
欢迎参观楼主的其他博客!
2018/6/6更新:增加一个菊花加载框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_loading_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="150dp"
android:layout_height="110dp"
android:background="@drawable/loading_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="21dp"
android:paddingRight="21dp"
android:paddingTop="10dp">
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center_horizontal"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/dialog_loading"
android:indeterminateOnly="true" />
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="加载中..."
android:textColor="#f0f0f0"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
资源图片:
drawable.dialog_loading.xml:
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/dialog_loading_img"
android:pivotX="50%"
android:pivotY="50%" />
最后推荐给一些想进大厂或者还没有拿到心仪offer的攻城狮们一本书,由大厂java面试官胡书敏编写,满满的干货,助你进到想去的公司。
博主上传资源下载链接:
自制免费无广告小说阅读APP下载:
https://download.youkuaiyun.com/download/yonghuming_jesse/10390364
全屏播放视频不拉伸源码:
https://download.youkuaiyun.com/download/yonghuming_jesse/10646274
科大讯飞语音评测服务接入源码:
https://download.youkuaiyun.com/download/yonghuming_jesse/10616924
android饺子播放器使用源码:
https://download.youkuaiyun.com/download/yonghuming_jesse/10619119
视频播放前显示视频第一帧源码:
https://download.youkuaiyun.com/download/yonghuming_jesse/10646332