Skip to content

Commit f54efc3

Browse files
feat(NoNetworkDialog): 添加自定义框架-11
1 parent de90cfb commit f54efc3

File tree

8 files changed

+209
-5
lines changed

8 files changed

+209
-5
lines changed

lite/src/main/java/com/pengxh/androidx/lite/widget/dialog/BottomActionSheet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Dialog;
44
import android.content.Context;
55
import android.os.Bundle;
6+
import android.view.Gravity;
67
import android.view.LayoutInflater;
78
import android.view.View;
89
import android.view.ViewGroup;
@@ -14,7 +15,6 @@
1415
import android.widget.TextView;
1516

1617
import androidx.annotation.ColorInt;
17-
import androidx.annotation.ColorRes;
1818

1919
import com.pengxh.androidx.lite.R;
2020
import com.pengxh.androidx.lite.utils.DeviceSizeUtil;
@@ -75,7 +75,7 @@ private BottomActionSheet(Builder builder) {
7575
@Override
7676
protected void onCreate(Bundle savedInstanceState) {
7777
super.onCreate(savedInstanceState);
78-
DialogLayoutParam.resetBottomParams(this, R.style.ActionSheetDialogAnimation, 1);
78+
DialogLayoutParam.resetParams(this, Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1);
7979
setContentView(R.layout.bottom_action_sheet);
8080
setCancelable(true);
8181
setCanceledOnTouchOutside(true);

lite/src/main/java/com/pengxh/androidx/lite/widget/dialog/DialogLayoutParam.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.app.Dialog;
44
import android.graphics.Color;
55
import android.graphics.drawable.ColorDrawable;
6-
import android.view.Gravity;
76
import android.view.Window;
87
import android.view.WindowManager;
98

@@ -25,14 +24,14 @@ public static void resetParams(Dialog dialog, double ratio) {
2524
window.setAttributes(params);
2625
}
2726

28-
public static void resetBottomParams(Dialog dialog, @StyleRes int resId, double ratio) {
27+
public static void resetParams(Dialog dialog, int gravity, @StyleRes int resId, double ratio) {
2928
Window window = dialog.getWindow();
3029
if (window == null) {
3130
return;
3231
}
3332
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
3433
window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
35-
window.setGravity(Gravity.BOTTOM);
34+
window.setGravity(gravity);
3635
//设置Dialog出现的动画
3736
window.setWindowAnimations(resId);
3837
WindowManager.LayoutParams params = window.getAttributes();
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.pengxh.androidx.lite.widget.dialog;
2+
3+
import android.app.Dialog;
4+
import android.content.Context;
5+
import android.os.Bundle;
6+
import android.view.Gravity;
7+
import android.view.View;
8+
import android.widget.Button;
9+
10+
import com.pengxh.androidx.lite.R;
11+
12+
public class NoNetworkDialog extends Dialog {
13+
14+
private final OnDialogButtonClickListener listener;
15+
16+
public static class Builder {
17+
private Context context;
18+
private OnDialogButtonClickListener listener;
19+
20+
public Builder setContext(Context context) {
21+
this.context = context;
22+
return this;
23+
}
24+
25+
public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
26+
this.listener = listener;
27+
return this;
28+
}
29+
30+
public NoNetworkDialog build() {
31+
return new NoNetworkDialog(this);
32+
}
33+
}
34+
35+
private NoNetworkDialog(Builder builder) {
36+
super(builder.context, R.style.UserDefinedDialogStyle);
37+
this.listener = builder.listener;
38+
}
39+
40+
@Override
41+
protected void onCreate(Bundle savedInstanceState) {
42+
super.onCreate(savedInstanceState);
43+
DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85f);
44+
setContentView(R.layout.dialog_no_network);
45+
setCancelable(false);
46+
setCanceledOnTouchOutside(false);
47+
48+
Button dialogButton = findViewById(R.id.dialogButton);
49+
dialogButton.setOnClickListener(new View.OnClickListener() {
50+
@Override
51+
public void onClick(View v) {
52+
listener.onButtonClick();
53+
dismiss();
54+
}
55+
});
56+
}
57+
58+
public interface OnDialogButtonClickListener {
59+
void onButtonClick();
60+
}
61+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<scale
4+
android:duration="200"
5+
android:fromXScale="1.0"
6+
android:fromYScale="1.0"
7+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
8+
android:pivotX="50%"
9+
android:pivotY="0%"
10+
android:toXScale="0.0"
11+
android:toYScale="0.0" />
12+
</set>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<scale
4+
android:duration="200"
5+
android:fromXScale="0.0"
6+
android:fromYScale="0.0"
7+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
8+
android:pivotX="50%"
9+
android:pivotY="0%"
10+
android:toXScale="1.0"
11+
android:toYScale="1.0" />
12+
</set>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="128dp"
3+
android:height="128dp"
4+
android:viewportWidth="1024"
5+
android:viewportHeight="1024">
6+
<path
7+
android:fillColor="#D8D8D8"
8+
android:pathData="M563.96,701.4s-44.05,-12.4 -61.13,55.42c-17.1,67.82 -34.5,181.05 -34.5,181.05l144.08,-17.27s-40.63,-199.6 -41.38,-202.91c-0.53,-2.26 -2.74,-9.9 -4.49,-14.03 -0.96,-2.26 -2.57,-2.27 -2.57,-2.27" />
9+
<path
10+
android:fillColor="#D7D7D7"
11+
android:pathData="M180.71,659.58l0.87,1.91c55.42,78.63 142.67,134.48 245.82,147.15 193.48,23.76 369.55,-113.43 393.25,-306.42 11.04,-89.94 -12.98,-176.1 -61.34,-244.9l-0.7,-0.73 -577.89,402.98z" />
12+
<path
13+
android:fillColor="#FDFDFD"
14+
android:pathData="M758.61,256.49c22.76,32.6 -87.98,149.5 -247.36,261.11 -159.38,111.6 -307.03,175.64 -329.78,143.04 -22.76,-32.6 87.99,-149.5 247.36,-261.11 159.38,-111.6 307.02,-175.65 329.78,-143.04" />
15+
<path
16+
android:fillColor="#EFEFEF"
17+
android:pathData="M507.24,509.81c-154.29,106.52 -293.8,172.51 -315.9,141.29 -22.12,-31.23 89.9,-144.83 244.19,-251.36 154.29,-106.52 295.55,-171.98 317.67,-140.75 20.56,28.94 -91.65,144.3 -245.95,250.81z" />
18+
<path
19+
android:fillColor="#F2F2F2"
20+
android:pathData="M701.76,790.23l27.7,-68.51 -46.61,-5.72s-44.04,-12.4 -61.13,55.42c-8.55,33.91 -17.17,79.18 -23.65,115.96l-118.9,-14.6a2634.68,2634.68 0,0 1,11.67 -62.06c-15.69,0.89 -31.6,0.72 -47.66,-0.53 -11.9,59.8 -21.46,121.96 -21.46,121.96l46.61,5.72 118.89,14.6 4.9,0.6 41.72,5.12 4.81,-11.88 92.65,-11.11s-17.3,-84.99 -29.53,-144.97" />
21+
<path
22+
android:fillColor="#EBEBEB"
23+
android:pathData="M729.47,721.72c-2.57,-0.31 -45.62,-10.64 -61.13,55.43 -15.51,66.07 -34.5,181.05 -34.5,181.05l144.08,-17.27s-40.63,-199.6 -41.39,-202.91a231.72,231.72 0,0 0,-3.81 -13.31c-0.58,-1.8 -1.66,-2.8 -3.24,-2.99z" />
24+
<path
25+
android:fillColor="#F5F5F5"
26+
android:pathData="M407.74,371.96l-29.42,22.92 103.97,131.88c6.18,-4.19 12.5,-8.38 18.72,-12.75 4.06,-2.84 8.18,-5.41 12.16,-8.26L407.74,371.97z" />
27+
<path
28+
android:fillColor="#F4F4F4"
29+
android:pathData="M420.76,350.22c-4.04,32.93 -34.08,56.34 -67.1,52.29 -33.02,-4.06 -56.5,-34.03 -52.45,-66.96 4.04,-32.92 34.08,-56.34 67.1,-52.29 33.02,4.06 56.5,34.04 52.46,66.97" />
30+
<path
31+
android:fillAlpha="0.458"
32+
android:fillColor="#FFFFFF"
33+
android:pathData="M394.66,329.79a21.22,21.22 0,0 1,-23.67 18.44,21.21 21.21,0 0,1 -18.49,-23.62 21.21,21.21 0,0 1,23.66 -18.44,21.22 21.22,0 0,1 18.5,23.62"
34+
android:strokeAlpha="0.458" />
35+
<path
36+
android:fillColor="#F5F5F5"
37+
android:pathData="M704.91,780.64l47.27,7.53c-4.26,-0.67 -6.97,-7.42 -6.17,-15.98 0.87,-9.24 5.52,-17.17 10.42,-17.6l-47.27,-7.53c-4.9,0.43 -9.55,8.37 -10.42,17.59 -0.79,8.59 1.9,15.33 6.17,16z" />
38+
<path
39+
android:fillColor="#DBDBDB"
40+
android:pathData="M756.43,754.58c4.86,-0.43 8.11,6.81 7.26,16.04 -0.87,9.32 -5.51,17.17 -10.37,17.59 -4.92,0.43 -8.17,-6.72 -7.31,-16.04 0.86,-9.23 5.51,-17.16 10.42,-17.59" />
41+
<path
42+
android:fillAlpha="0.5"
43+
android:fillColor="#E6E6E6"
44+
android:pathData="M424.06,177.6a161.16,161.16 0,0 0,-47.71 -13.5c-88.42,-10.85 -168.9,52.04 -179.76,140.49a161.33,161.33 0,0 0,1.46 49.09,10.75 10.75,0 1,0 21.15,-3.92 139.81,139.81 0,0 1,-1.26 -42.55c9.41,-76.66 79.16,-131.17 155.79,-121.76a139.66,139.66 0,0 1,41.36 11.7,10.75 10.75,0 1,0 8.98,-19.55z"
45+
android:strokeAlpha="0.5" />
46+
<path
47+
android:fillAlpha="0.3"
48+
android:fillColor="#E6E6E6"
49+
android:pathData="M302.21,104.98a225.16,225.16 0,0 0,-48.52 18.23C187.56,157.18 141.79,221.52 132.56,296.73a225.72,225.72 0,0 0,2.87 72.93,10.75 10.75,0 1,0 21.06,-4.32 204.2,204.2 0,0 1,-2.59 -65.99c8.36,-68.06 49.76,-126.25 109.62,-157a203.66,203.66 0,0 1,43.88 -16.5,10.76 10.76,0 0,0 -5.19,-20.87z"
50+
android:strokeAlpha="0.3" />
51+
<path
52+
android:fillAlpha="0.7"
53+
android:fillColor="#E6E6E6"
54+
android:pathData="M397.24,224.59a107.62,107.62 0,0 0,-27.44 -7.11c-58.94,-7.23 -112.59,34.7 -119.83,93.67a107.73,107.73 0,0 0,0.23 28.14,10.75 10.75,0 1,0 21.3,-3 86.21,86.21 0,0 1,-0.18 -22.53c5.79,-47.18 48.72,-80.72 95.87,-74.93a86.12,86.12 0,0 1,21.96 5.68,10.75 10.75,0 1,0 8.09,-19.93z"
55+
android:strokeAlpha="0.7" />
56+
<path
57+
android:fillColor="#E6E6E6"
58+
android:pathData="M418.39,128.28l-22.94,-22.42 22.43,-22.85a8.56,8.56 0,0 0,-0.13 -12.13,8.61 8.61,0 0,0 -12.15,0.11l-22.43,22.86 -22.94,-22.42a8.6,8.6 0,0 0,-12.15 0.12,8.55 8.55,0 0,0 0.14,12.12l22.94,22.42 -22.43,22.86a8.56,8.56 0,0 0,0.13 12.12,8.61 8.61,0 0,0 12.15,-0.12l22.44,-22.86 22.93,22.42a8.61,8.61 0,0 0,12.15 -0.12,8.57 8.57,0 0,0 -0.14,-12.12" />
59+
</vector>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="match_parent"
5+
android:layout_height="wrap_content"
6+
android:layout_margin="10dp"
7+
app:cardCornerRadius="10dp">
8+
9+
<LinearLayout
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:background="@color/white"
13+
android:gravity="center"
14+
android:orientation="vertical">
15+
16+
<TextView
17+
android:id="@+id/dialogTitleView"
18+
android:layout_width="match_parent"
19+
android:layout_height="wrap_content"
20+
android:fontFamily="sans-serif-medium"
21+
android:gravity="center_horizontal"
22+
android:paddingVertical="10dp"
23+
android:text="温馨提示"
24+
android:textColor="@color/lib_text_color"
25+
android:textSize="16sp" />
26+
27+
<View
28+
android:layout_width="match_parent"
29+
android:layout_height="1px"
30+
android:background="#CCCCCC" />
31+
32+
<ImageView
33+
android:layout_width="wrap_content"
34+
android:layout_height="wrap_content"
35+
android:layout_marginTop="10dp"
36+
android:src="@drawable/ic_no_network" />
37+
38+
<TextView
39+
android:layout_width="wrap_content"
40+
android:layout_height="wrap_content"
41+
android:paddingVertical="10dp"
42+
android:text="未发现网络,内容走丢了..."
43+
android:textColor="#CCCCCC"
44+
android:textSize="14sp" />
45+
46+
<Button
47+
android:id="@+id/dialogButton"
48+
android:layout_width="match_parent"
49+
android:layout_height="wrap_content"
50+
android:background="@drawable/dialog_button_selector"
51+
android:gravity="center"
52+
android:text="去设置网络"
53+
android:textColor="@color/blue"
54+
android:textSize="16sp" />
55+
</LinearLayout>
56+
</androidx.cardview.widget.CardView>

lite/src/main/res/values/style.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
<item name="android:windowExitAnimation">@anim/popup_hide</item>
4343
</style>
4444

45+
<style name="UserDefinedAnimation" parent="@android:style/Animation.Dialog">
46+
<item name="android:windowEnterAnimation">@anim/action_dialog_show</item>
47+
<item name="android:windowExitAnimation">@anim/action_dialog_hide</item>
48+
</style>
49+
4550
<style name="ActivityInOutAnimation" parent="Theme.AppCompat.Light.NoActionBar">
4651
<!--进入-->
4752
<item name="android:activityOpenEnterAnimation">@anim/activity_in</item>

0 commit comments

Comments
 (0)