2017-09-15 67 views
0

如何实现计时器到片段内自动图像幻灯片? 我用Fragment和CustomSwipeAdapter,我不知道在哪里把计时器,使图像自动滑动。它是在片段还是在CustomSwipe Adpater中?如何实现计时器自动图像幻灯片内的幻灯片?

这是片段:

public class PrimaryFragment extends Fragment { 


    public static ViewPager viewPager1; 

    CustomSwipeAdapter adapter; 
    public PrimaryFragment() { 
     // Required empty public constructor 

    } 

    private String[] health ={"Abdominal Disorder","Abrasion","Aches","Anxiety","Bruises","Burns or Scalds","Constipation","Coughs" + 
      "","Cramps","Diarrhea","Dizziness","Dyspepsia","Epilepsy","Fever","Gastric Problem" + 
      "","High Blood Pressure","Hydrophobia","Tonsillitis"}; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 



    } 

    @Nullable 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // return inflater.inflate(R.layout.primary_layout,null); 
     //((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("First Aid and Survival Tips"); 



     View rootView = inflater.inflate(R.layout.primary_layout,container,false); 

     viewPager1 = (ViewPager) rootView.findViewById(R.id.view_pager); 
     adapter = new CustomSwipeAdapter(this.getActivity()); 
     viewPager1.setAdapter(adapter); 


     ListView lv = (ListView) rootView.findViewById(R.id.oneListView); 
     ArrayAdapter adapter = new ArrayAdapter(this.getActivity(),android.R.layout.simple_list_item_1,health); 
     lv.setAdapter(adapter); 


     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       // Toast.makeText(getActivity(),health[position],Toast.LENGTH_SHORT).show(); 
       if(position == 0) { 
        Intent intent = new Intent(view.getContext(), abdominal.class); 
        startActivity(intent); 
       } 
       if(position == 1) { 
        Intent intent = new Intent(view.getContext(), abrasion.class); 
        startActivity(intent); 
       } 
       if(position == 2) { 
        Intent intent = new Intent(view.getContext(), aches.class); 
        startActivity(intent); 
       } 
       if(position == 3) { 
        Intent intent = new Intent(view.getContext(), allergies.class); 
        startActivity(intent); 
       } 
       if(position == 4) { 
        Intent intent = new Intent(view.getContext(), bruises.class); 
        startActivity(intent); 
       } 
       if(position == 5) { 
        Intent intent = new Intent(view.getContext(), burns.class); 
        startActivity(intent); 
       } 
       if(position == 6) { 
        Intent intent = new Intent(view.getContext(), constipation.class); 
        startActivity(intent); 
       } 
       if(position == 7) { 
        Intent intent = new Intent(view.getContext(), coughs.class); 
        startActivity(intent); 
       } 
       if(position == 8) { 
        Intent intent = new Intent(view.getContext(), cramps.class); 
        startActivity(intent); 
       } 
       if(position == 9) { 
        Intent intent = new Intent(view.getContext(), diarrhea.class); 
        startActivity(intent); 
       } 
       // if(position == 10) { 
       //  Intent intent = new Intent(view.getContext(), digestive.class); 
       // startActivity(intent); 
       // } 
       if(position == 10) { 
        Intent intent = new Intent(view.getContext(), dizziness.class); 
        startActivity(intent); 
       } 
       if(position == 11) { 
        Intent intent = new Intent(view.getContext(), dyspepsia.class); 
        startActivity(intent); 
       } 
       if(position == 12) { 
        Intent intent = new Intent(view.getContext(), epilepsy.class); 
        startActivity(intent); 
       } 
       if(position == 13) { 
        Intent intent = new Intent(view.getContext(), fever.class); 
        startActivity(intent); 
       } 
       if(position == 14) { 
        Intent intent = new Intent(view.getContext(), gastric.class); 
        startActivity(intent); 
       } 
       if(position == 15) { 
        Intent intent = new Intent(view.getContext(), highblood.class); 
        startActivity(intent); 
       } 
       if(position == 16) { 
        Intent intent = new Intent(view.getContext(), hydrophobia.class); 
        startActivity(intent); 
       } 
       if(position == 17) { 
        Intent intent = new Intent(view.getContext(), tonsilitis.class); 
        startActivity(intent); 
       } 
      } 
     }); 
     return rootView; 
    }} 

CustomSwipeAdapter

public class CustomSwipeAdapter extends PagerAdapter { 
    private int[] image_resource = {R.drawable.one, R.drawable.two, R.drawable.three}; 
    private Context ctx; 
    private LayoutInflater layoutInflater; 

    public CustomSwipeAdapter(Context ctx) { 
     this.ctx = ctx; 
    } 

    @Override 
    public int getCount() { 

     return image_resource.length; 
    } 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View item_view = layoutInflater.inflate(R.layout.swipe_layout, container, false); 
     ImageView imageview = (ImageView) item_view.findViewById(R.id.image_view); 
     /*TextView textView = (TextView) item_view.findViewById(R.id.image_count);*/ 
     imageview.setImageResource(image_resource[position]); 
     /* textView.setText("" + position);*/ 
     container.addView(item_view); 
     return item_view; 
    } 

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

} 
+0

有是最可怕的字符串数组赋值我已见过:O – Merlin

+0

我用过一个库。这一个在这里https://github.com/daimajia/AndroidImageSlider要小心内存泄漏,处理图像总是很困难。 –

回答

0
Handler h = new Handler(); 
int delay = 15000; //1 second 
Runnable runnable; 
private int[] pagerIndex = {-1}; 
@Override 
public void onStart() { 


    h.postDelayed(new Runnable() { 
     public void run() { 
      pagerIndex[0]++; 
    if (pagerIndex[0] >= adapter.getCount()) { 
     pagerIndex[0] = 0; 
    } 

    viewPager.setCurrentItem(pagerIndex[0]); 
      runnable=this; 

      h.postDelayed(runnable, delay); 
     } 
    } 
    , delay); 

    super.onStart(); 
} 
+0

它的工作表示感谢! – Candy083

0

你可以在你Fragment启动一个定时任务。 尚未验证此代码,但它应该可以正常工作。 创建滑动任务:

final long delay = 2000; 
Handler handler = new Handler(); 
private int[] pagerIndex = {-1}; 
private Runnable swipeTask = new Runnable() { 
    @Override 
    public void run() { 

     pagerIndex[0]++; 
     if (pagerIndex[0] >= adapter.getCount()) { 
      pagerIndex[0] = 0; 
     } 

     viewPager.setCurrentItem(pagerIndex[0]); 
     handler.postDelayed(this, delay); 
    } 
}; 

而在你的片段的onCreateView(),在viewPager后,适配器等已经确定,

task.run(); 
+0

postDelayed有错误。无法解析的方法(匿名java.lang .Runnable,长) – Candy083

+0

@ Candy083处理程序应该是android.os.Handler,而不是java.util.logging.Handler – Neeraj

+0

是的,它的工作表示感谢! – Candy083