Android 如何将滑动视图添加到这些现有编码中
我需要在Android 如何将滑动视图添加到这些现有编码中,android,swipe,swipe-gesture,Android,Swipe,Swipe Gesture,我需要在选项卡活动中添加一个滑动视图 我刚刚创建了一个六个选项卡,即主页、博客、音频、视频等 画廊 选项卡创建得非常完美。但我无法知道如何为这六个选项卡添加滑动。我需要 添加从右向左滑动和从左向右滑动 layout\u home.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an
选项卡活动
中添加一个滑动视图
我刚刚创建了一个六个选项卡,即主页、博客、音频、视频等
画廊
选项卡
创建得非常完美。但我无法知道如何为这六个选项卡添加滑动。我需要
添加从右向左滑动和从左向右滑动
layout\u home.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@drawable/bottom_bar"
android:layout_weight="0" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout
android:id="@+id/tab_home"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<FrameLayout
android:id="@+id/tab_video"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<FrameLayout
android:id="@+id/tab_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_blog"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_gal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_more"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
</FrameLayout>
<com.sit.gems.util.AppPromoPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
</LinearLayout>
AppPromoPager.java:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@drawable/bottom_bar"
android:layout_weight="0" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout
android:id="@+id/tab_home"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<FrameLayout
android:id="@+id/tab_video"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<FrameLayout
android:id="@+id/tab_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_blog"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_gal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/tab_more"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
</FrameLayout>
<com.sit.gems.util.AppPromoPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
</LinearLayout>
这是AppPromopager。我正在使用ViewPager
package com.sit.gems.util;
import java.net.URLDecoder;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.os.Parcelable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RelativeLayout;
import com.gems.android.R;
import com.sit.gems.app.AppData;
import com.sit.gems.util.ImageCache.ImageCacheParams;
public class AppPromoPager extends RelativeLayout implements
ViewPager.OnPageChangeListener {
//private PromoPageIndicator indicator;
private PromoPagerListener listener;
private Handler trackerHandler = new Handler();
private ImageFetcher mImageFetcher;
public AppPromoPager(Context context) {
super(context);
}
public AppPromoPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AppPromoPager(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void init(FragmentActivity context, List<String> promotions) {
ImageCacheParams cacheParams = new ImageCacheParams(context, AppConstants.IMAGE_CACHE_DIR);
mImageFetcher = new ImageFetcher(context, AppData.getScreenWidth(),(AppData.getScreenWidth()/2));
mImageFetcher.setLoadingImage(R.drawable.ic_launcher);
mImageFetcher.addImageCache(context.getSupportFragmentManager(), cacheParams);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
ViewPager pager = new ViewPager(context);
ViewPagerAdapter adapter = new ViewPagerAdapter(context, promotions);
pager.setAdapter(adapter);
pager.setCurrentItem(0);
pager.setOnPageChangeListener(this);
addView(pager, params);
//indicator = new PromoPageIndicator(context);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.CENTER_HORIZONTAL);
params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
params1.setMargins(0, 0, 0, 3);
//addView(indicator, params1);
//if (promotions.size() > 1)
// indicator.addCircleImage(promotions.size());
/*pager.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE
&& scrollView != null) {
scrollView.requestDisallowInterceptTouchEvent(true);
}
return false;
}
});*/
}
class ViewPagerAdapter extends PagerAdapter {
Context activity;
List<String> promotions;
public ViewPagerAdapter(Context context, List<String> promotions) {
this.promotions = promotions;
activity = context;
}
public int getCount() {
return promotions.size();
}
public Object instantiateItem(View collection, final int position) {
final ImageView view = new ImageView(activity);
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
view.setScaleType(ScaleType.CENTER);
String imageUrl = promotions.get(position);
if (imageUrl != null && imageUrl.length() > 0) {
setImage(view, imageUrl);
}
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.selectedPromo(promotions.get(position),position);
}
});
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
//listener.selectedPosition(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
listener.selectedPosition(position);
}
public interface PromoPagerListener {
public void selectedPromo(String offer,int postion);
public void selectedPosition(int postion);
}
public void setPromoPagerListener(PromoPagerListener listener) {
this.listener = listener;
}
private void setImage(final ImageView view, final String imageUrl) {
trackerHandler.post(new Runnable() {
@Override
public void run() {
mImageFetcher.loadImage(URLDecoder.decode(imageUrl),view);
}
});
}
}
package com.sit.gems.util;
导入java.net.url解码器;
导入java.util.List;
导入android.content.Context;
导入android.os.Handler;
导入android.os.Parcelable;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.view.PagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.util.AttributeSet;
导入android.view.view;
导入android.widget.ImageView;
导入android.widget.ImageView.ScaleType;
导入android.widget.RelativeLayout;
导入com.gems.android.R;
导入com.sit.gems.app.AppData;
导入com.sit.gems.util.ImageCache.ImageCacheParams;
公共类AppPromoPager扩展了RelativeLayout实现
ViewPager.OnPageChangeListener{
//专用指示灯;
私人传声器;
私有处理程序trackerHandler=新处理程序();
私有图像获取器;
公共AppPromoPager(上下文){
超级(上下文);
}
公共AppPromoPager(上下文、属性集属性){
超级(上下文,attrs);
}
公共AppPromoPager(上下文上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
}
公共void init(碎片活动上下文、列表促销){
ImageCacheParams cacheParams=新的ImageCacheParams(上下文,AppConstants.IMAGE\u CACHE\u DIR);
mImageFetcher=newimagefetcher(上下文,AppData.getScreenWidth(),(AppData.getScreenWidth()/2));
mImageFetcher.setLoadingImage(R.drawable.ic_启动器);
addImageCache(context.getSupportFragmentManager(),cacheParams);
RelativeLayout.LayoutParams params=新的RelativeLayout.LayoutParams(
LayoutParams.MATCH_父级,LayoutParams.MATCH_父级);
ViewPager pager=新的ViewPager(上下文);
ViewPagerAdapter适配器=新的ViewPagerAdapter(上下文、促销);
寻呼机设置适配器(适配器);
pager.setCurrentItem(0);
setOnPageChangeListener(这个);
addView(寻呼机、参数);
//指标=新指标(上下文);
RelativeLayout.LayoutParams参数1=新的RelativeLayout.LayoutParams(
LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
参数1.addRule(相对中心水平);
params1.addRule(RelativeLayout.ALIGN\u PARENT\u BOTTOM);
参数1.设置边距(0,0,0,3);
//addView(指示器,参数1);
//如果(promotions.size()>1)
//indicator.addCircleImage(promotions.size());
/*setOnTouchListener(新的OnTouchListener(){
公共布尔onTouch(视图v,运动事件){
如果(event.getAction()==MotionEvent.ACTION\u移动
&&scrollView!=空){
scrollView.RequestDisallowWinterCeptTouchEvent(true);
}
返回false;
}
});*/
}
类ViewPagerAdapter扩展了PagerAdapter{
语境活动;
列出促销活动;
public ViewPagerAdapter(上下文、列表促销){
这是促销=促销;
活动=背景;
}
public int getCount(){
返回促销。大小();
}
公共对象实例化项(视图集合,最终整型位置){
最终图像视图=新图像视图(活动);
view.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_父级,
LayoutParams.MATCH_PARENT));
view.setScaleType(ScaleType.CENTER);
String imageUrl=促销。获取(职位);
if(imageUrl!=null&&imageUrl.length()>0){
setImage(视图,imageUrl);
}
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
listener.selectedPromo(promotions.get(position),position);
}
});
((ViewPager)集合).addView(视图,0);
返回视图;
}
@凌驾
公共项目(视图arg0、整数arg1、对象arg2){
((视图寻呼机)arg0.removeView((视图)arg2);
}
@凌驾
公共布尔值isViewFromObject(视图arg0,对象arg1){
返回arg0==((视图)arg1);
}
@凌驾
公共包裹存储状态(){
返回null;
}
}
@凌驾
公共无效onPageScrollStateChanged(int arg0){
//listener.selectedPosition(arg0);
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
}
@凌驾
已选择页面上的公共无效(内部位置){
listener.selectedPosition(位置);
}
公共接口PromotorPagerListener{
公共无效选择促销(字符串报价、内部职位);
公共空选职位(内部职位);
}
公共无效设置PromoPagerListener(PromoPagerListener侦听器){
this.listener=listener;
}
私有void setImage(最终ImageView视图,最终字符串imageUrl){
履带式起重机