您的位置:首页 > 移动开发 > Android开发

Android中TabHost应用-支持点击和手势滑动

2014-10-15 20:45 302 查看
        这几天参与的项目中用到了TabHost,开始的时候已经实现了其点击事件处理的效果,今天突然想到现在一些软件都支持滑动就在其上面加上滑动切换Activity的效果。

         主要的方法就是点击处理时间,和滑动处理事件以及二者的同步。

           点击处理时间代码如下:         

mTabHost = this.getTabHost();

mTabHost.addTab(mTabHost
.newTabSpec("TAG1")
.setIndicator("TAG1")
.setContent(
new Intent(IPCViewActivity.this, IPCListActivity.class)));
mTabHost.addTab(mTabHost
.newTabSpec("TAG2")
.setIndicator("TAG2")
.setContent(
new Intent(IPCViewActivity.this, IPCOtherActivity.class)));
mTabHost.addTab(mTabHost
.newTabSpec("TAG3")
.setIndicator("TAG3")
.setContent(
new Intent(IPCViewActivity.this,
IPCSettingActivity.class)));

friend = (RadioButton) findViewById(R.id.tab_friend);
search = (RadioButton) findViewById(R.id.tab_search);
setting = (RadioButton) findViewById(R.id.tab_setting);
// 设置当前显示哪一个标签
mTabHost.setCurrentTab(0);

friend.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mTabHost.setCurrentTabByTag("TAG1");
currentView = 0;
}
});

search.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mTabHost.setCurrentTabByTag("TAG2");
currentView = 1;
}
});

setting.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mTabHost.setCurrentTabByTag("TAG3");
currentView = 2;
}
});


滑动处理代码如下:

gestureDetector = new GestureDetector(new MyGestureDetector());
listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return gestureDetector.onTouchEvent(event);
}
};

class MyGestureDetector extends SimpleOnGestureListener {
@Override
/**
* @param e1 第一个ACTION_DOWN MotionEvent并且只有一个
* @param e2 最后一个ACTION_MOVE MotionEvent
* @param velocityX X轴上的移动速度,像素/秒
* @param velocityY Y轴上的移动速度,像素/秒
*/
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
try {
// 从右向左滑动
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

if (currentView == maxTabIndex) {
//currentView = 0;
} else {
currentView++;
}
mTabHost.setCurrentTab(currentView);
// 从左向右滑动
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

if (currentView == 0) {
//currentView = maxTabIndex;
} else {
currentView--;
}
mTabHost.setCurrentTab(currentView);
}

} catch (Exception e) {
// TODO: handle exception
}

return false;
}

}

这样处理既可以通过按键切换Activity又可以通过滑动切换。

方法比较过时,但效果还可以!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android tabhost
相关文章推荐