【Android】ViewPager实现图片左右滑动播放及添加点击事件

前两天老师找我帮她写个Android的demo。说是要实现一个图片左右滑动的效果,并且点击图片的时候会发出声音。

由于好久没写过Android了,所以花了一段时间来复习和学习。现将过程和实现简单记录如下。(项目参照了一部分CSDN博主Android将军的)

实现使用的是ViewPager

代码如下:在点击监听的部分,通过获取List<>中的控件添加触摸监听。当然你可以在各个页面添加多个控件,然后在获取该界面的控件,然后各个添加监听。

而且代码有优化的地方。。。不过只是为了演示,就没有太花时间去做。。。原谅我的不负责。。。

package com.example.viewpagerdemo;import java.util.ArrayList;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Parcelable;import android.app.Activity;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;public class TwoActivity extends Activity implements OnPageChangeListener {private ViewPager viewPager;private ArrayList<View> list;private ImageView imageView;private ImageView[] imageViews;private MediaPlayer mediaPlayer = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LayoutInflater inflater = getLayoutInflater();list = new ArrayList<View>();list.add(inflater.inflate(R.layout.item01, null));list.add(inflater.inflate(R.layout.item02, null));list.add(inflater.inflate(R.layout.item03, null));list.add(inflater.inflate(R.layout.item04, null));list.add(inflater.inflate(R.layout.item05, null));imageViews = new ImageView[list.size()];ViewGroup group = (ViewGroup)findViewById(R.id.viewGroup);viewPager = (ViewPager)findViewById(R.id.viewPager);for(int i=0; i<list.size(); i++){imageView = new ImageView(this);imageView.setLayoutParams(new LayoutParams(12,12));imageViews[i] = imageView;if(i == 0){imageView.setBackgroundResource(R.drawable.page_indicator_focused);}else{imageView.setBackgroundResource(R.drawable.page_indicator_unfocused);}group.addView(imageView);}viewPager.setAdapter(new MyAdapter());viewPager.setOnPageChangeListener(this);viewPager.setCurrentItem(0);}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {Log.e("log", "你当前选择的是 " + arg0%list.size());// 切换到下一页时将上一页在播放的音乐停掉并置为null,已重新初始化if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}setImageBackground(arg0%list.size());}private void setImageBackground( int selectItems){for(int i=0; i<imageViews.length; i++){if(i == selectItems){imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);}else{imageViews[i].setBackgroundResource(R.drawable.page_indicator_unfocused);}}}public class MyAdapter extends PagerAdapter{@Overridepublic int getCount() {return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic int getItemPosition(Object object) {return super.getItemPosition(object);}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {// 为每页添加点击监听,初始化音乐并点击时播放,并保证每次点击都可以重新播放switch (position){case 0:list.get(0).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("log", "你当前选择的是 dog ");if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}initMediaPlayer(0);mediaPlayer.start();}});break;case 1:list.get(1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("log", "你当前选择的是 cat ");if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}initMediaPlayer(1);mediaPlayer.start();}});break;case 2:list.get(2).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("log", "你当前选择的是 cat ");if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}initMediaPlayer(2);mediaPlayer.start();}});break;case 3:list.get(3).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("log", "你当前选择的是 cat ");if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}initMediaPlayer(3);mediaPlayer.start();}});break;case 4:list.get(4).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("log", "你当前选择的是 cat ");if(mediaPlayer!=null){if (mediaPlayer.isPlaying()){mediaPlayer.stop();mediaPlayer = null;}}initMediaPlayer(4);mediaPlayer.start();}});break;default:break;}((ViewPager) container).addView(list.get(position%list.size()),0);return list.get(position%list.size());}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic void destroyItem(View container, int position, Object object) {((ViewPager)container).removeView(list.get(position%list.size()));}}private void initMediaPlayer(int i){// 初始化对于页面的音乐try {switch (i){case 0:mediaPlayer = MediaPlayer.create(this, R.raw.bgm1);mediaPlayer.prepare();break;case 1:mediaPlayer = MediaPlayer.create(this, R.raw.bgm2);mediaPlayer.prepare();break;case 2:mediaPlayer = MediaPlayer.create(this, R.raw.bgm3);mediaPlayer.prepare();break;case 3:mediaPlayer = MediaPlayer.create(this, R.raw.bgm4);mediaPlayer.prepare();break;case 4:mediaPlayer = MediaPlayer.create(this, R.raw.bgm5);mediaPlayer.prepare();break;default:break;}} catch (Exception e){e.printStackTrace();}}}布局文件:

谁说的,人非要快乐不可,好像快乐由得人选择。

【Android】ViewPager实现图片左右滑动播放及添加点击事件

相关文章:

你感兴趣的文章:

标签云: