2017-10-11 5 views
0

こんにちは、私は画像スライダの自動スクロールとタッチイベントのためのサードパーティのライブラリを使用していますすべてのものは、画像slider.iの画像を手動でスワイプする以外は、手動で画像をスワイプすることはできません。私が使っているライブラリの 名前はここで 「Trinea /アンドロイド-オートスクロールビューページャ」Trinea/android-auto-scroll-view-pagerを使用したビューページャでの手動スワッピングが機能していませんか?

は私が自動スクロールビューのページャを使用していますフラグメントのための私のコードです: -

public class HomeFragment extends Fragment { 
    // TODO: Rename parameter arguments, choose names that match 
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 
    TextView tv_slider, tv_button; 
    AutoScrollViewPager mViewPager; 



    private static int currentPage = 0; 
    private static int NUM_PAGES = 0; 
    private static final Integer[] IMAGES= {R.drawable.ecommerce, R.drawable.digital_marketing, R.drawable.explainer, R.drawable.it_services, 
      R.drawable.mobile_app, R.drawable.seo, R.drawable.software, R.drawable.webdesign}; 
    private ArrayList<Integer> ImagesArray = new ArrayList<Integer>(); 


    // TODO: Rename and change types of parameters 
    private String mParam1; 
    private String mParam2; 

    private OnFragmentInteractionListener mListener; 

    public HomeFragment() { 

    } 

    public static HomeFragment newInstance(String param1, String param2) { 
     HomeFragment fragment = new HomeFragment(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 


     } 
    } 




    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_home, container, false); 

     tv_slider=(TextView)v.findViewById(R.id.tv_slider); 
     tv_slider.setTypeface(EasyFonts.robotoLight(this.getActivity())); 
     tv_button=(TextView)v.findViewById(R.id.tv_button); 
     tv_button.setTypeface(EasyFonts.robotoLight(this.getActivity())); 



     for(int i=0;i<IMAGES.length;i++) 
      ImagesArray.add(IMAGES[i]); 



     mViewPager = (AutoScrollViewPager) v.findViewById(R.id.pager); 
     mViewPager.setAdapter(new SlidingImage_Adapter(getActivity(),ImagesArray)); 
     mViewPager.setOffscreenPageLimit(1); 


     CirclePageIndicator indicator = (CirclePageIndicator) 
       v.findViewById(R.id.indicator); 

     indicator.setViewPager(mViewPager); 

     final float density = getResources().getDisplayMetrics().density; 

//Set circle indicator radius 
     indicator.setRadius(3 * density); 

     NUM_PAGES =IMAGES.length; 

     mViewPager.startAutoScroll(); 
     mViewPager.setInterval(3000); 

     mViewPager.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 

       switch(motionEvent.getAction()) 
       { 
        case MotionEvent.ACTION_DOWN: 
         Log.w("touched","down"); 
         mViewPager.stopAutoScroll(); 
         return true; 
        //break; 

        case MotionEvent.ACTION_UP: 
         Log.w("touched","up"); 
         mViewPager.startAutoScroll(); 
         return true; 

       } 



       return true; 
      } 
     }); 





     // Pager listener over indicator 
     indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       currentPage = position; 

      } 



      @Override 
      public void onPageScrolled(int pos, float arg1, int arg2) { 

       switch (pos){ 

        case 0: 
         tv_slider.setText(getString(R.string.es_content)); 
         break; 

        case 1: 
         tv_slider.setText(getString(R.string.dm_content)); 
         break; 

        case 2: 
         tv_slider.setText(getString(R.string.ev_content)); 
         break; 

        case 3: 
         tv_slider.setText(getString(R.string.it_content)); 
         break; 

        case 4: 
         tv_slider.setText(getString(R.string.md_content)); 
         break; 

        case 5: 
         tv_slider.setText(getString(R.string.seo_content)); 
         break; 

        case 6: 
         tv_slider.setText(getString(R.string.sd_content)); 
         break; 

        case 7: 
         tv_slider.setText(getString(R.string.wd_content)); 
         break; 

       } 



      } 

      @Override 
      public void onPageScrollStateChanged(int pos) { 

      } 
     }); 


     return v; 


    } 








    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 


    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 




    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mViewPager.startAutoScroll(); 
    } 


    @Override 
    public void onStop() { 
     super.onStop(); 
     mViewPager.stopAutoScroll(); 
    } 
} 

これは私のアダプタクラスである: -

public class SlidingImage_Adapter extends PagerAdapter { 


    private ArrayList<Integer> IMAGES; 
    private LayoutInflater inflater; 
    private Context context; 


    public SlidingImage_Adapter(Context context, ArrayList<Integer> IMAGES) { 
     super(); 
     this.context = context; 
     this.IMAGES=IMAGES; 
     inflater = LayoutInflater.from(context); 
    } 



    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public int getCount() { 
     return IMAGES.size(); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup view, int position) { 
     View imageLayout = inflater.inflate(R.layout.sliding_images, view, false); 

     assert imageLayout != null; 
     final ImageView imageView = (ImageView) imageLayout 
       .findViewById(R.id.image); 


     imageView.setImageResource(IMAGES.get(position)); 

     view.addView(imageLayout, 0); 

     return imageLayout; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void restoreState(Parcelable state, ClassLoader loader) { 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

} 

これは

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@color/background" 
    tools:context="com.vamediabox.vamediaboxapp.activities.MainActivity"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:background="@color/colorPrimary"> 

    </RelativeLayout> 



<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 


    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     > 



     <android.support.v7.widget.CardView 

      android:layout_width="300dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/rl_slider" 
      android:gravity="center_horizontal" 
      app:cardUseCompatPadding="true" 
      app:cardElevation="4dp" 
      app:cardCornerRadius="3dp" 
      app:cardPreventCornerOverlap="false" 
      android:layout_centerHorizontal="true"> 



      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:layout_margin="2dp" 
       android:id="@+id/rl1"> 

      <cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager 
       android:id="@+id/pager" 
       android:layout_width="fill_parent" 
       android:layout_height="200dp" 
       android:layout_margin="2dp" 
       android:layout_alignParentTop="true" /> 



       <com.viewpagerindicator.CirclePageIndicator 
        android:id="@+id/indicator" 
        android:layout_width="fill_parent" 
        android:layout_height="20dp" 
        android:layout_centerHorizontal="true" 
        android:layout_below="@+id/pager" 
        android:padding="5dip" 
        app:centered="true" 
        app:fillColor="@color/colorPrimary" 
        app:pageColor="@color/view_color" 
        app:snap="false" /> 


      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="80dp" 
       android:id="@+id/tv_slider" 
       android:layout_marginTop="5dp" 
       android:layout_marginLeft="10dp" 
       android:layout_marginRight="10dp" 
       android:layout_marginBottom="5dp" 
       android:textSize="14sp" 
       android:layout_below="@+id/indicator" 
       android:textColor="@color/slider_text" 

       /> 


      </RelativeLayout> 


    </android.support.v7.widget.CardView> 
    </RelativeLayout> 

</ScrollView> 
</RelativeLayout> 
homefragment.xmlファイルですあなたはまだあなたが行う場合には、この問題を解決する方法を探している場合

、これを最後には、あなたの問題がある場合、これはあるAutoScrollViewPager内consumeTouchをチェックsliding_images.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="1dip" > 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:layout_gravity="center" 
    android:scaleType="fitXY" /> 
</FrameLayout> 

答えて

-1

確認されていません。

あなたは

getParent().requestDisallowInterceptTouchEvent(true) 

が呼び出さなっていることを確認する必要があります。

これが役に立ちます。

乾杯

関連する問題