framelayout.setOnLongClickListener(new View.OnLongClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onLongClick(View v) {
flag = !flag;
if (flag) {
Animator animator = ViewAnimationUtils.createCircularReveal(
change,//作用在哪个View上面
framelayout.getWidth() / 2,
framelayout.getHeight() / 2,//扩散的中心点
0,//开始扩散初始半径
framelayout.getWidth());//扩散结束半径
animator.setDuration(1000);
animator.setInterpolator(new AccelerateInterpolator());
change.setVisibility(View.VISIBLE);
animator.start();
} else {
Animator animator = ViewAnimationUtils.createCircularReveal(
change,//作用在哪个View上面
change.getWidth() / 2,
change.getHeight() / 2,//扩散的中心点
change.getWidth(),//开始扩散初始半径
0);//扩散结束半径
animator.setDuration(1000);
animator.setInterpolator(new AccelerateInterpolator());
animator.start();
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
change.setVisibility(View.GONE);
// tvshow.setVisibility(View.GONE);
}
});
}
return false;
}
});
代码不多就是控制一个显隐,XML
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="200dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/defaul"
android:padding="10dp"
android:textColor="#fff"
android:textSize="20sp"
android:gravity="center"
android:text="开始就显示的"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="100dp" />
<TextView
android:visibility="gone"
android:id="@+id/change"
android:padding="10dp"
android:textColor="#fff"
android:textSize="20sp"
android:gravity="center"
android:background="@color/colorPrimaryDark"
android:text="可以是布局"
android:layout_width="match_parent"
android:layout_height="100dp" />
</FrameLayout>
这里需要注意几点:
1.控制显隐的时机
2.隐藏之后,View是获取不到宽高的!!!
长按没做成 明天再搞,,,,加了坐标
framelayout.setOnTouchListener(new View.OnTouchListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
float x = event.getX();
float y = event.getY();
//按下点 距上距下
int v1 = (int) Math.abs(bottom - y);
float min = Math.min(v1, y);
flag = !flag;
if (flag) {
Animator animator = ViewAnimationUtils.createCircularReveal(
change,//作用在哪个View上面
(int) x,
(int) y,//扩散的中心点
min,//开始扩散初始半径
defaul.getWidth());//扩散结束半径
animator.setDuration(1000);
animator.setInterpolator(new AccelerateInterpolator());
change.setVisibility(View.VISIBLE);
animator.start();
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
tvshow.setVisibility(View.VISIBLE);
}
});
} else {
Animator animator = ViewAnimationUtils.createCircularReveal(
change,//作用在哪个View上面
(int) x,
(int) y,//扩散的中心点
defaul.getWidth(),//开始扩散初始半径
min);//扩散结束半径
animator.setDuration(1000);
animator.setInterpolator(new AccelerateInterpolator());
animator.start();
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
change.setVisibility(View.GONE);
tvshow.setVisibility(View.GONE);
}
});
}
break;
default:
break;
}
return false;
}
});