Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将滑动视图添加到这些现有编码中_Android_Swipe_Swipe Gesture - Fatal编程技术网

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){
    履带式起重机