Skip to content

Commit

Permalink
1. 优化Attach弹窗的条目布局
Browse files Browse the repository at this point in the history
2. 解决PartShadow弹窗内点击触发消失的Bug
3. 重构部分代码
  • Loading branch information
junixapp committed Jan 10, 2019
1 parent 0da7448 commit 359a80d
Show file tree
Hide file tree
Showing 14 changed files with 104 additions and 22 deletions.
Binary file modified app/release/app-release.apk
Binary file not shown.
2 changes: 1 addition & 1 deletion library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ publish {
userOrg = 'li-xiaojun'
groupId = 'com.lxj'
artifactId = 'xpopup'
publishVersion = '1.0.8'
publishVersion = '1.0.9'
repoName = 'jrepo'
desc = '功能强大,UI简洁,交互优雅的通用弹窗!可以替代Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout等组件,自带十几种效果良好的动画, 支持完全的UI和动画自定义!'
website = 'https://github.com/li-xiaojun/XPopup'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.lxj.xpopup.animator.ScrollScaleAnimator;
import com.lxj.xpopup.enums.PopupAnimation;
import com.lxj.xpopup.util.XPopupUtils;
import com.lxj.xpopup.widget.PartShadowContainer;

/**
* Description: 依附于某个View的弹窗
Expand All @@ -22,7 +23,7 @@
public abstract class AttachPopupView extends BasePopupView {
protected int defaultOffsetY = 6;
protected int defaultOffsetX = 0;
protected CardView attachPopupContainer;
protected PartShadowContainer attachPopupContainer;

public AttachPopupView(@NonNull Context context) {
super(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import java.util.Arrays;

/**
* Description:
* Description: Attach类型的列表弹窗
* Create by dance, at 2018/12/12
*/
public class AttachListPopupView extends AttachPopupView {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

Expand Down Expand Up @@ -82,7 +81,6 @@ public void onItemClick(View view, RecyclerView.ViewHolder holder, int position)
}
});
recyclerView.setAdapter(adapter);
Log.e("tag", "center list init data...");
}

String title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
Expand All @@ -14,6 +15,7 @@
import com.lxj.xpopup.animator.TranslateAnimator;
import com.lxj.xpopup.core.AttachPopupView;
import com.lxj.xpopup.enums.PopupAnimation;
import com.lxj.xpopup.interfaces.OnClickOutsideListener;
import com.lxj.xpopup.util.XPopupUtils;

/**
Expand Down Expand Up @@ -59,7 +61,7 @@ protected void doAttach() {
} else {
// atView在上半部分,PartShadow应该显示在它下方,计算atView之下的高度
params.height = getMeasuredHeight() - rect.bottom;
// 防止伸到导航栏下面\
// 防止伸到导航栏下面
if(XPopupUtils.hasNavigationBar(getContext()) && !XPopupUtils.isFuckDevice()){
params.height -= XPopupUtils.getNavBarHeight();
}
Expand All @@ -76,18 +78,17 @@ protected void doAttach() {

attachPopupContainer.setCardBackgroundColor(Color.TRANSPARENT);
attachPopupContainer.setCardElevation(0);
attachPopupContainer.setOnClickListener(new OnClickListener() {
attachPopupContainer.setOnClickOutsideListener(new OnClickOutsideListener() {
@Override
public void onClick(View v) {
public void onClickOutside() {
dismiss();
}
});
}

@Override
protected PopupAnimator getPopupAnimator() {
View implView = ((ViewGroup)getPopupContentView()).getChildAt(0);
return new TranslateAnimator(implView, isShowUp ?
return new TranslateAnimator(getPopupImplView(), isShowUp ?
PopupAnimation.TranslateFromBottom: PopupAnimation.TranslateFromTop);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.lxj.xpopup.interfaces;

/**
* Description:
* Create by dance, at 2019/1/10
*/
public interface OnClickOutsideListener {
void onClickOutside();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.lxj.xpopup.widget;

import android.content.Context;
import android.graphics.Rect;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.CardView;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.FrameLayout;

import com.lxj.xpopup.interfaces.OnClickOutsideListener;
import com.lxj.xpopup.util.XPopupUtils;

/**
* Description:
* Create by dance, at 2019/1/10
*/
public class PartShadowContainer extends CardView {
public boolean isDismissOnTouchOutside = true;
public PartShadowContainer(@NonNull Context context) {
super(context);
}

public PartShadowContainer(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}

public PartShadowContainer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

private float x, y;
private long downTime;
@Override
public boolean onTouchEvent(MotionEvent event) {
// 计算OutSide的Rect
View implView = getChildAt(0);
Rect outsideRect = null;
FrameLayout.LayoutParams implParams = (LayoutParams) implView.getLayoutParams();
if(implParams.gravity==Gravity.TOP){
outsideRect = new Rect(0, implView.getHeight(), getWidth(), getHeight());
}else {
outsideRect = new Rect(0, 0, getWidth(), getHeight()-implView.getHeight());
}

if(XPopupUtils.isInRect(event.getX(), event.getY(), outsideRect)){
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
downTime = System.currentTimeMillis();
break;
case MotionEvent.ACTION_UP:
float dx = event.getX() - x;
float dy = event.getY() - y;
float distance = (float) Math.sqrt(Math.pow(dx,2) + Math.pow(dy, 2));
if(distance< ViewConfiguration.get(getContext()).getScaledTouchSlop() && (System.currentTimeMillis() - downTime)<350){
if (isDismissOnTouchOutside){
if(listener!=null)listener.onClickOutside();
}
}
x = 0;
y = 0;
downTime = 0;
break;
}
}
return true;
}
private OnClickOutsideListener listener;
public void setOnClickOutsideListener(OnClickOutsideListener listener){
this.listener = listener;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.ViewDragHelper;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.CardView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.lxj.xpopup.widget;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
Expand Down
10 changes: 5 additions & 5 deletions library/src/main/res/layout/_xpopup_adapter_text.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="18dp"
android:paddingTop="18dp"
android:paddingRight="40dp"
android:paddingBottom="18dp">
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:paddingRight="18dp"
android:paddingBottom="15dp">

<ImageView
android:id="@+id/iv_image"
Expand All @@ -23,7 +23,7 @@
android:ellipsize="end"
android:lines="1"
android:textColor="@color/_xpopup_title_color"
android:textSize="17sp" />
android:textSize="16sp" />

<Space
android:layout_width="0dp"
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/res/layout/_xpopup_attach_popup_view.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
<com.lxj.xpopup.widget.PartShadowContainer xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/attachPopupContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="0dp"
app:cardElevation="10dp">

</android.support.v7.widget.CardView>
</com.lxj.xpopup.widget.PartShadowContainer>
2 changes: 0 additions & 2 deletions library/src/main/res/values/strings.xml

This file was deleted.

0 comments on commit 359a80d

Please sign in to comment.