当前位置:网站首页>Complete activity switching according to sliding
Complete activity switching according to sliding
2022-07-05 11:57:00 【asahi_ xin】
quote
First step : take OnGestureListener Interface encapsulation
public class SlideListener implements android.view.GestureDetector.OnGestureListener {
private Context context;
private Class<? extends Activity> leftCls;
private Class<? extends Activity> rightCls;
public SlideListener(Context context, Class<? extends Activity> leftCls,Class<? extends Activity> rightCls) {
this.context = context;
this.leftCls = leftCls;
this.rightCls = rightCls;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int FLING_MIN_DISTANCE = 50;
float FLING_MIN_VELOCITY = 50;
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Scroll left , The right view shows
ActivityManager.goActivity(context, rightCls);
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// Slide to the right , Left side view display
ActivityManager.goActivity(context, leftCls);
}
return false;
}
}
The second step : initialization
public class MainActivity extends AppCompatActivity {
GestureDetector gd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gd = new GestureDetector(this, new SlideListener(this, LeftActivity.class,RightActivity.class));
}
}
The third step : Realization OnTouchListener Interface , And set up monitoring
public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
GestureDetector gd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gd = new GestureDetector(this, new SlideListener(this, LeftActivity.class,RightActivity.class));
ConstraintLayout layout = findViewById(R.id.layout);
layout.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
v.performClick();
return gd.onTouchEvent(event);
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Optimize
The above three steps can realize sliding switching , But it seems stiff without animation when switching , You can refer to
边栏推荐
- 13.(地图数据篇)百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
- 12. (map data) cesium city building map
- [pytorch modifies the pre training model: there is little difference between the measured loading pre training model and the random initialization of the model]
- pytorch-权重衰退(weight decay)和丢弃法(dropout)
- Idea set the number of open file windows
- 【上采样方式-OpenCV插值】
- Web API configuration custom route
- Linux安装部署LAMP(Apache+MySQL+PHP)
- Codeforces Round #804 (Div. 2)
- COMSOL -- establishment of 3D graphics
猜你喜欢
abap查表程序
Liunx prohibit Ping explain the different usage of traceroute
Uniapp + unicloud + Unipay realize wechat applet payment function
【L1、L2、smooth L1三类损失函数】
[configuration method of win11 multi-user simultaneous login remote desktop]
COMSOL -- establishment of 3D graphics
《增长黑客》阅读笔记
Multi table operation - sub query
Network five whip
Is it difficult to apply for a job after graduation? "Hundreds of days and tens of millions" online recruitment activities to solve your problems
随机推荐
Crawler (9) - scrape framework (1) | scrape asynchronous web crawler framework
简单解决redis cluster中从节点读取不了数据(error) MOVED
Is investment and finance suitable for girls? What financial products can girls buy?
Codeforces Round #804 (Div. 2)
COMSOL -- 3D casual painting -- sweeping
【load dataset】
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in
【主流Nivida显卡深度学习/强化学习/AI算力汇总】
Splunk configuration 163 mailbox alarm
12. (map data) cesium city building map
Mongodb replica set
如何让你的产品越贵越好卖
C # implements WinForm DataGridView control to support overlay data binding
Idea set the number of open file windows
[mainstream nivida graphics card deep learning / reinforcement learning /ai computing power summary]
Pytorch linear regression
pytorch-线性回归
Use and install RkNN toolkit Lite2 on itop-3568 development board NPU
跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式
Uniapp + unicloud + Unipay realize wechat applet payment function