Android 如何在活动之间滑动(我的代码哪里出错?)
我有4个活动,有4个类&xml布局;我想在4个活动之间滑动!! 我使用另一篇文章中的代码(这篇文章:) 我想在触摸leftToright或rightToleft swipe时打开新活动 我的代码哪里错了: 我的代码:Android 如何在活动之间滑动(我的代码哪里出错?),android,android-viewpager,swipe,Android,Android Viewpager,Swipe,我有4个活动,有4个类&xml布局;我想在4个活动之间滑动!! 我使用另一篇文章中的代码(这篇文章:) 我想在触摸leftToright或rightToleft swipe时打开新活动 我的代码哪里错了: 我的代码: package com.package110.Y; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; im
package com.package110.Y;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class ActivitySwipeDetectorActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// how to set this 3 line to in my code Or change or update it
//ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(this);
//lowestLayout = (RelativeLayout)this.findViewById(R.id.lowestLayout);
//lowestLayout.setOnTouchListener(activitySwipeDetector);
}
public class ActivitySwipeDetector implements View.OnTouchListener {
Intent left = new Intent(getApplicationContext(), left.class);
Intent right = new Intent(getApplicationContext(), right.class);
Intent top = new Intent(getApplicationContext(), top.class);
Intent bottom = new Intent(getApplicationContext(), bottom.class);
static final String logTag = "ActivitySwipeDetector";
private Activity activity;
static final int MIN_DISTANCE = 100;
private float downX, downY, upX, upY;
public ActivitySwipeDetector(Activity activity){
this.activity = activity;
}
public void onRightToLeftSwipe(){
Log.i(logTag, "RightToLeftSwipe!");
activity.startActivity(right);
}
public void onLeftToRightSwipe(){
Log.i(logTag, "LeftToRightSwipe!");
activity.startActivity(left);
}
public void onTopToBottomSwipe(){
Log.i(logTag, "onTopToBottomSwipe!");
activity.startActivity(top);
}
public void onBottomToTopSwipe(){
Log.i(logTag, "onBottomToTopSwipe!");
activity.startActivity(bottom);
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
downX = event.getX();
downY = event.getY();
return true;
}
case MotionEvent.ACTION_UP: {
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
// swipe horizontal?
if(Math.abs(deltaX) > MIN_DISTANCE){
// left or right
if(deltaX < 0) { this.onLeftToRightSwipe(); return true; }
if(deltaX > 0) { this.onRightToLeftSwipe(); return true; }
}
else {
Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
// swipe vertical?
if(Math.abs(deltaY) > MIN_DISTANCE){
// top or down
if(deltaY < 0) { this.onTopToBottomSwipe(); return true; }
if(deltaY > 0) { this.onBottomToTopSwipe(); return true; }
}
else {
Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
return true;
}
}
return false;
}
}
}
我认为最好的方法是一个单独的活动和4个片段,以及一个ViewPager 您可以查看有关片段的链接: 这是关于ViewPager的:
我认为最好的方法是一个活动和4个片段,带一个ViewPager 您可以查看有关片段的链接: 这是关于ViewPager的:
您应该使用
Fragment
s。它使导航更加干净
片段
在活动
内部运行,其外观和功能与活动
类似
下面是一些代码
活动
保存片段
s
(选项卡和ActionBar
可以隐藏)
如果您使用的是AndroidStudio
强>
选项卡活动
(向底部选择导航样式)片段
s
Fragment
并选择Fragment
类型活动
类中的布局
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new FirstFragment();
}
if (position == 1) {
fragment = new SecondFragment();
}
if (position == 2) {
fragment = new ThirdFragment();
}
if (position == 3) {
fragment = new FourthFragment();
}
return fragment;
}
希望有帮助 你应该使用
Fragment
s。它使导航更加干净
片段
在活动
内部运行,其外观和功能与活动
类似
下面是一些代码
活动
保存片段
s
(选项卡和ActionBar
可以隐藏)
如果您使用的是AndroidStudio
强>
选项卡活动
(向底部选择导航样式)片段
s
Fragment
并选择Fragment
类型活动
类中的布局
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new FirstFragment();
}
if (position == 1) {
fragment = new SecondFragment();
}
if (position == 2) {
fragment = new ThirdFragment();
}
if (position == 3) {
fragment = new FourthFragment();
}
return fragment;
}
希望有帮助 尝试使用
片段
s!当我需要这样的东西时,我就是这么做的,它工作得非常好!尝试使用片段
s!当我需要这样的东西时,我就是这么做的,它工作得非常好!
public class FirstFragment extends Fragment {
public ScoreFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.first_layout, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// YOUR CODE HERE
}
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new FirstFragment();
}
if (position == 1) {
fragment = new SecondFragment();
}
if (position == 2) {
fragment = new ThirdFragment();
}
if (position == 3) {
fragment = new FourthFragment();
}
return fragment;
}