Skip to content

Commit

Permalink
配置dialog显示位置,即默认动画
Browse files Browse the repository at this point in the history
  • Loading branch information
shehuan committed May 28, 2019
1 parent 7a5c445 commit 313be60
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 21 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ allprojects {
**Step 2. 添加项目依赖**
``` gradle
dependencies {
compile 'com.github.SheHuan:NiceDialog:1.1.9'
implementation 'com.github.SheHuan:NiceDialog:1.2.0'
}
```
**Step 3. 配置、展示dialog**
Expand All @@ -39,12 +39,12 @@ NiceDialog.init()
}
})
.setDimAmount(0.3f) //调节灰色背景透明度[0-1],默认0.5f
.setShowBottom(true) //是否在底部显示dialog,默认flase
.setGravity() //可选,设置dialog的位置,默认居中,可通过系统Gravity的类的常量修改,例如Gravity.BOTTOM(底部),Gravity.Right(右边),Gravity.BOTTOM|Gravity.Right(右下)
.setMargin() //dialog左右两边到屏幕边缘的距离(单位:dp),默认0dp
.setWidth() //dialog宽度(单位:dp),默认为屏幕宽度,-1代表WRAP_CONTENT
.setHeight() //dialog高度(单位:dp),默认为WRAP_CONTENT
.setOutCancel(false) //点击dialog外是否可取消,默认true
.setAnimStyle(R.style.EnterExitAnimation) //设置dialog进入、退出的动画style(底部显示的dialog有默认动画)
.setAnimStyle(R.style.EnterExitAnimation) //设置dialog进入、退出的自定义动画;根据设置的Gravity,默认提供了左、上、右、下位置进入退出的动画
.show(getSupportFragmentManager()); //显示dialog
```
**注意:** `setMargin()``setWidth()`选择一个即可
Expand Down
7 changes: 4 additions & 3 deletions app/src/main/java/com/shehuan/test/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
Expand Down Expand Up @@ -37,7 +38,7 @@ public void onClick(View v) {
}
})
.setDimAmount(0.3f)
.setShowBottom(true)
.setGravity(Gravity.BOTTOM)
.show(getSupportFragmentManager());
}

Expand All @@ -50,7 +51,7 @@ public void convertView(ViewHolder holder, final BaseNiceDialog dialog) {

}
})
.setShowBottom(true)
.setGravity(Gravity.BOTTOM)
.setHeight(310)
.show(getSupportFragmentManager());
}
Expand All @@ -71,7 +72,7 @@ public void run() {
});
}
})
.setShowBottom(true)
.setGravity(Gravity.BOTTOM)
.show(getSupportFragmentManager());
}

Expand Down
49 changes: 37 additions & 12 deletions nicedialog/src/main/java/com/shehuan/nicedialog/BaseNiceDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public abstract class BaseNiceDialog extends DialogFragment {
private static final String WIDTH = "width";
private static final String HEIGHT = "height";
private static final String DIM = "dim_amount";
private static final String BOTTOM = "show_bottom";
private static final String GRAVITY = "gravity";
private static final String CANCEL = "out_cancel";
private static final String THEME = "theme";
private static final String ANIM = "anim_style";
Expand All @@ -30,7 +30,7 @@ public abstract class BaseNiceDialog extends DialogFragment {
private int width;//宽度
private int height;//高度
private float dimAmount = 0.5f;//灰度深浅
private boolean showBottom;//是否底部显示
private int gravity = Gravity.CENTER;//显示的位置
private boolean outCancel = true;//是否点击外部取消
@StyleRes
protected int theme = R.style.NiceDialogStyle; // dialog主题
Expand Down Expand Up @@ -58,7 +58,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
width = savedInstanceState.getInt(WIDTH);
height = savedInstanceState.getInt(HEIGHT);
dimAmount = savedInstanceState.getFloat(DIM);
showBottom = savedInstanceState.getBoolean(BOTTOM);
gravity = savedInstanceState.getInt(GRAVITY);
outCancel = savedInstanceState.getBoolean(CANCEL);
theme = savedInstanceState.getInt(THEME);
animStyle = savedInstanceState.getInt(ANIM);
Expand Down Expand Up @@ -93,7 +93,7 @@ public void onSaveInstanceState(Bundle outState) {
outState.putInt(WIDTH, width);
outState.putInt(HEIGHT, height);
outState.putFloat(DIM, dimAmount);
outState.putBoolean(BOTTOM, showBottom);
outState.putInt(GRAVITY, gravity);
outState.putBoolean(CANCEL, outCancel);
outState.putInt(THEME, theme);
outState.putInt(ANIM, animStyle);
Expand All @@ -106,12 +106,37 @@ private void initParams() {
WindowManager.LayoutParams lp = window.getAttributes();
//调节灰色背景透明度[0-1],默认0.5f
lp.dimAmount = dimAmount;
//是否在底部显示
if (showBottom) {
lp.gravity = Gravity.BOTTOM;
if (animStyle == 0) {
animStyle = R.style.DefaultAnimation;
}
if (gravity != 0) {
lp.gravity = gravity;
}
switch (gravity) {
case Gravity.LEFT:
case (Gravity.LEFT | Gravity.BOTTOM):
case (Gravity.LEFT | Gravity.TOP):
if (animStyle == 0) {
animStyle = R.style.LeftAnimation;
}
break;
case Gravity.TOP:
if (animStyle == 0) {
animStyle = R.style.TopAnimation;
}
break;
case Gravity.RIGHT:
case (Gravity.RIGHT | Gravity.BOTTOM):
case (Gravity.RIGHT | Gravity.TOP):
if (animStyle == 0) {
animStyle = R.style.RightAnimation;
}
break;
case Gravity.BOTTOM:
if (animStyle == 0) {
animStyle = R.style.BottomAnimation;
}
break;
default:
break;

}

//设置dialog宽度
Expand Down Expand Up @@ -157,8 +182,8 @@ public BaseNiceDialog setDimAmount(float dimAmount) {
return this;
}

public BaseNiceDialog setShowBottom(boolean showBottom) {
this.showBottom = showBottom;
public BaseNiceDialog setGravity(int gravity) {
this.gravity = gravity;
return this;
}

Expand Down
File renamed without changes.
File renamed without changes.
11 changes: 11 additions & 0 deletions nicedialog/src/main/res/anim/left_enter_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0%p" />

<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
13 changes: 13 additions & 0 deletions nicedialog/src/main/res/anim/left_exit_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0%p"
android:toXDelta="-100%p" />

<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0.3" />
</set>
11 changes: 11 additions & 0 deletions nicedialog/src/main/res/anim/right_enter_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p" />

<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
13 changes: 13 additions & 0 deletions nicedialog/src/main/res/anim/right_exit_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0%p"
android:toXDelta="100%p" />

<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0.3" />
</set>
11 changes: 11 additions & 0 deletions nicedialog/src/main/res/anim/top_enter_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:fromYDelta="-100%p"
android:toYDelta="0%p" />

<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
13 changes: 13 additions & 0 deletions nicedialog/src/main/res/anim/top_exit_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:toYDelta="-100%p" />

<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0.3" />
</set>
22 changes: 19 additions & 3 deletions nicedialog/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="NiceDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
Expand All @@ -9,8 +10,23 @@
<item name="android:windowContentOverlay">@null</item>
</style>

<style name="DefaultAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/enter_anim</item>
<item name="android:windowExitAnimation">@anim/exit_anim</item>
<style name="BottomAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/bottom_enter_anim</item>
<item name="android:windowExitAnimation">@anim/bottom_exit_anim</item>
</style>

<style name="RightAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/right_enter_anim</item>
<item name="android:windowExitAnimation">@anim/right_exit_anim</item>
</style>

<style name="LeftAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/left_enter_anim</item>
<item name="android:windowExitAnimation">@anim/left_exit_anim</item>
</style>

<style name="TopAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/top_enter_anim</item>
<item name="android:windowExitAnimation">@anim/top_exit_anim</item>
</style>
</resources>

0 comments on commit 313be60

Please sign in to comment.