点击/滑动界面显示,不多说,上代码,性能未知
效果图
点击/滑动前界面
滑动后效果
布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="true"
android:orientation="vertical"
tools:openDrawer="start">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:textAlignment="center"
android:gravity="center"
android:background="@color/colorAccent"
android:layout_height="40dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@android:color/white"
android:text="我是标题" />
</androidx.appcompat.widget.LinearLayoutCompat>
<AbsoluteLayout
android:clipChildren="true"
android:id="@+id/content_field"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="370dp"
android:background="@android:color/holo_blue_dark"
android:layout_height="match_parent">
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/right"
android:layout_x="370dp"
android:orientation="vertical"
android:layout_height="match_parent">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="40dp">
<TextView
android:layout_width="match_parent"
android:layout_weight="1"
android:text="标题1"
android:gravity="center"
android:layout_height="40dp"></TextView>
<TextView
android:layout_width="match_parent"
android:layout_weight="1"
android:text="标题2"
android:gravity="center"
android:layout_height="40dp"></TextView>
<TextView
android:id="@+id/title4"
android:layout_width="match_parent"
android:layout_weight="1"
android:text="标题3"
android:gravity="center"
android:layout_height="40dp"></TextView>
<TextView
android:layout_width="match_parent"
android:layout_weight="1"
android:text="标题4"
android:gravity="center"
android:layout_height="40dp"></TextView>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent">
<View
android:layout_width="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_red_dark"
android:layout_height="match_parent"></View>
<View
android:layout_width="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:layout_height="match_parent"></View>
<View
android:layout_width="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_green_light"
android:layout_height="match_parent"></View>
<View
android:layout_width="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark"
android:layout_height="match_parent"></View>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</AbsoluteLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
activity
import android.animation.ObjectAnimator;
import android.graphics.Point;
import android.graphics.Rect;
import android.opengl.Visibility;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.ui.AppBarConfiguration;
public class MainActivity3 extends AppCompatActivity {
LinearLayoutCompat rightLayout;
private float startX, startY, endX, endY;
private ObjectAnimator animatorjin, animatortui;
private TextView title4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
rightLayout = findViewById(R.id.right);
title4 = findViewById(R.id.title4);
animatorjin = ObjectAnimator.ofFloat(rightLayout, "translationX", 0, -830);
animatortui = ObjectAnimator.ofFloat(rightLayout, "translationX", -830, 0);
animatorjin.setDuration(200);
animatortui.setDuration(200);
Log.e("标题", checkIfVisable() + "");
rightLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
/**
* 点击的开始位置
*/
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
Log.e("起始位置:", event.getX() + "," + event.getY());
break;
/**
* 触屏实时位置
*/
case MotionEvent.ACTION_MOVE:
// Log.e("实时位置:", event.getX() + "," + event.getY());
break;
/**
* 离开屏幕的位置
*/
case MotionEvent.ACTION_UP:
endX = event.getX();
endY = event.getY();
Log.e("结束位置:", event.getX() + "," + event.getY() + (startX - endX > 300f));
if (checkIfVisable()) {//可见
if ((endX - startX > 300f) || (startX == endX && startY == endY))
animatortui.start();
} else {//不可见
if ((startX - endX > 300f) || startX == endX && startY == endY)
animatorjin.start();
}
break;
default:
break;
}
/**
* 注意返回值
* true:view继续响应Touch操作;
* false:view不再响应Touch操作,故此处若为false,只能显示起始位置,不能显示实时位置和结束位置
*/
return true;
}
});
}
boolean checkIfVisable() {
Point p = new Point();
int screenWidth = p.x;
int screenHeight = p.y;
Rect rect = new Rect(0, 0, screenWidth, screenHeight);
int[] location = new int[2];
title4.getLocationInWindow(location);
if (title4.getLocalVisibleRect(rect)) {
return true;
} else {
return false;
}
}
}



















