Android的 - 活动之间刷卡 [英] android - swiping between activities
问题描述
我开发一个当地报纸Android应用和ATM我想实现物品滑动切换。我的主要活动是HNappActivity和文章显示活动AcrticleActivity。我的问题是,刷卡只是不会工作,我很绝望,因为我不知道什么是错。这里是code,其中刷卡实现:
I'm developing android app for a local newspapers and atm I'm trying to implement swiping between articles. My main activity is HNappActivity and activity for article showing is AcrticleActivity. My problem is, that the swiping just wont work and I'm desperate because I have no idea whats wrong. Here's code, where swiping is implemented:
public class ArticleActivity extends SherlockActivity {
int hnCatIndex, hnArtIndex;
WebView hnWebView;
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.article);
hnCatIndex = getIntent().getExtras().getInt("catIndex", 0);
hnArtIndex = getIntent().getExtras().getInt("artIndex", 0);
Article article = Source.getInstance().getCategory(hnCatIndex).getArticle(hnArtIndex);
hnWebView=(WebView)findViewById(R.id.webview);
hnWebView.loadData(article == null ? "" : article.getBody(), "text/html",
"utf-8");
gestureDetector = new GestureDetector(new MyGestureDetector());
View articleview=(View) findViewById(R.id.article_main);
articleview.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
});
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
hnArtIndex++;
Intent intent = new Intent(ArticleActivity.this.getBaseContext(), ArticleActivity.class);
intent.putExtra("catIntext",hnCatIndex);
intent.putExtra("artIndex",hnArtIndex);
startActivity(intent);
ArticleActivity.this.overridePendingTransition(
R.anim.slide_in_right,
R.anim.slide_out_left
);
// right to left swipe
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (hnArtIndex==1) {
Intent intent = new Intent(ArticleActivity.this.getBaseContext(), HNappActivity.class);
startActivity(intent);
}
else {
hnArtIndex--;
Intent intent = new Intent(ArticleActivity.this.getBaseContext(), ArticleActivity.class);
intent.putExtra("catIntext",hnCatIndex);
intent.putExtra("artIndex",hnArtIndex);
startActivity(intent);
}
ArticleActivity.this.overridePendingTransition(
R.anim.slide_in_left,
R.anim.slide_out_right
);
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}
}
推荐答案
我甚至没有看过code,问题是你想活动之间刷卡。
你应该尝试的片段,在同一个活动中的所有片段之间刷卡。
I didn't even read the code, the problem is that you're trying to swipe between activities. You should be trying to swipe between fragments, all fragments in the same activity.
请参阅:
的http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
http://developer.android.com/reference/android/support/v4/view/ViewPager.html
see: http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html http://developer.android.com/reference/android/support/v4/view/ViewPager.html
编辑:
private WebView hnWebView;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.webViewFragment, null);
hnWebView=(WebView)v.findViewById(R.id.webview);
return v;
}
这篇关于Android的 - 活动之间刷卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!