An abstract class for creating custom popupwindow easily.
##请注意:
因为在使用过程中发现了一些方法的命名存在误导性,这个问题是因为在初期写下了方法名之后一直忘了改,因此在 v 1.3.0之后这些名字将会改变,具体改动如下:
原方法名 | 现方法名 | 备注 |
---|---|---|
getPopupView() | onCreatePopupView() | 本方法改名为的是减少误导性 |
getAnimaView() | initAnimaView() | 理由同上 |
mContext | getContext() | context将会改为private,需要使用方法获取 |
mPopupView | getPopupWindowView() | mPopupView将会改为private,需要用方法获取 |
getShowAnimation()/getExitAnimation() | 【protect】 initShowAnimation()/initExitAnimation() | getShowAnimation()/getExitAnimation()将会改为获取进行过初始化的animation |
getShowAnimator()/getExitAnimator() | 【protect】 initShowAnimator()/initExitAnimator() | getShowAnimator()/getExitAnimator()将会改为获取进行过初始化的animator |
事实上在下也清楚有很多方法命名还是不太好,如果您有更好的命名欢迎提交pr,同时这次的改动对您的使用造成万分不便,在下深表歉意,希望得到您的谅解。
##ATTENTION:
Because of some methods' name are misleading,we will change them after ver 1.3.0
commit details:
Old name | New name | Note |
---|---|---|
getPopupView() | onCreatePopupView() | getPopupView() will be Deprecated |
getAnimaView() | initAnimaView() | getAnimaView will be Deprecated |
mContext | getContext() | the mContext field will be changed to private,use getContext() instead |
mPopupView | getPopupWindowView() | the **mPopupView ** field will be changed to private,use getPopupWindowView() instead |
getShowAnimation()/getExitAnimation() | 【protect】 initShowAnimation()/initExitAnimation() | getShowAnimation()/getExitAnimation() will return animation whitch has been initialized |
getShowAnimator()/getExitAnimator() | 【protect】 initShowAnimator()/initExitAnimator() | getShowAnimator()/getExitAnimator() will return animator whitch has been initialized |
Please forgive us for the inconvenience brought to you.
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.razerdp:BasePopup:v1.3.0'
}
Step 1: create xml file for the popup
etc.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#8f000000">
<RelativeLayout
android:id="@+id/popup_anima"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog"
android:layout_centerInParent="true"
android:layout_margin="25dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textColor="#3dd1a5"
android:text="This is title"
android:gravity="left|center_vertical"
android:textSize="18sp"
android:paddingLeft="15dp"
/>
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#3dd1a5"
android:layout_below="@id/title"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/line"
android:paddingTop="20dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingBottom="15dp"
android:textSize="14sp"
android:textColor="#1a1a1a"
android:lineSpacingMultiplier="1.2"
android:text="Warning:nuclear silo detected.\nWarning:nuclear silo detected.\nWarning:nuclear silo detected."
/>
<View
android:id="@+id/line2"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_below="@id/content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@color/line_bg"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/cancel"
android:layout_width="60dp"
android:layout_height="40dp"
android:gravity="center"
android:padding="3dp"
android:textColor="#bfbfbf"
android:textSize="14sp"
android:layout_below="@id/line2"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:text="CANCEL"/>
<TextView
android:id="@+id/ok"
android:layout_width="60dp"
android:layout_height="40dp"
android:gravity="center"
android:padding="3dp"
android:textColor="#3dd1a5"
android:textSize="14sp"
android:layout_below="@id/line2"
android:layout_toLeftOf="@id/cancel"
android:layout_marginRight="15dp"
android:text="OK"/>
</RelativeLayout>
</RelativeLayout>
Step 2: Create a class whitch extend BasePopupWindow
Step 3: override some methods
etc.
public class DialogPopup extends BasePopupWindow implements View.OnClickListener{
private TextView ok;
private TextView cancel;
public DialogPopup(Activity context) {
super(context);
ok= (TextView) findViewById(R.id.ok);
cancel= (TextView) findViewById(R.id.cancel);
setViewClickListener(this,ok,cancel);
}
@Override
protected Animation initShowAnimation() {
AnimationSet set=new AnimationSet(false);
Animation shakeAnima=new RotateAnimation(0,15,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
shakeAnima.setInterpolator(new CycleInterpolator(5));
shakeAnima.setDuration(400);
set.addAnimation(getDefaultAlphaAnimation());
set.addAnimation(shakeAnima);
return set;
}
@Override
protected View getClickToDismissView() {
return getPopupWindowView();
}
@Override
public View onCreatePopupView() {
return createPopupById(R.layout.popup_dialog);
}
@Override
public View initAnimaView() {
return findViewById(R.id.popup_anima);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.ok:
Toast.makeText(getContext(),"click the ok button",Toast.LENGTH_SHORT).show();
break;
case R.id.cancel:
Toast.makeText(getContext(),"click the cancel button",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
**Step 4:**create the object and show
etc.
DialogPopup popup = new DialogPopup(context);
popup.showPopupWindow();
click the link to show more:
https://github.com/razerdp/BasePopup/blob/master/UpdateLog.md
#License MIT