如何在Android中滑动图像来播放和更改音频

时间:2013-11-26 05:37:22

标签: android audio swipe

我创建了一个简单的android项目,它将显示存储在数组中的各种图像,并通过滑动图像来改变音频。 这是我的代码

package com.example.arab;

                 import android.os.Bundle;
            import android.app.Activity;
            import android.content.Context;
            import android.support.v4.view.PagerAdapter;
            import android.support.v4.view.ViewPager;

        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;

        public class MainActivity extends Activity {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager);
                ImagePagerAdapter adapter = new ImagePagerAdapter();
                viewPager.setAdapter(adapter);
            }

            private class ImagePagerAdapter extends PagerAdapter {

                private int[] mImages = new int[] {R.drawable.alif,R.drawable.baa,R.drawable.taa,R.drawable.saa,R.drawable.gim,R.drawable.haa,
                                                    R.drawable.kha,R.drawable.dal,R.drawable.zal,R.drawable.raa,R.drawable.jaa,R.drawable.seen,
                                                    R.drawable.shin,R.drawable.soad,R.drawable.duad,R.drawable.tua,R.drawable.jua,R.drawable.aiin,
                                                    R.drawable.guain,R.drawable.faa,R.drawable.kaff,R.drawable.kuff,R.drawable.lum,R.drawable.mim,
                                                    R.drawable.nun,R.drawable.wow,R.drawable.haasmall,R.drawable.hamza,R.drawable.eaa};


                private int[] mAudio= new int[]{R.raw.alif,R.raw.baa,R.raw.taa,R.raw.saa,R.raw.gim,R.raw.haa,R.raw.kha,R.raw.dal,R.raw.zal,
                                                R.raw.raa,R.raw.jaa,R.raw.seen,R.raw.shin,R.raw.soad,R.raw.duad,R.raw.tua,R.raw.jua,R.raw.aiin,
                                                R.raw.guain,R.raw.faa,R.raw.kaff,R.raw.kuff,R.raw.lum,R.raw.mim,R.raw.nun,R.raw.wow,R.raw.haa_small,
                                                R.raw.hamza,R.raw.eaa};
                @Override
                public int getCount() {
                return mImages.length;
                  }
                @Override
                public boolean isViewFromObject(View view, Object object) {
                   return view == ((ImageView) object);
                      }
                @Override
                public Object instantiateItem(ViewGroup container, int position) {
                     Context context = MainActivity.this;
                   ImageView imageView = new ImageView(context);
                   int padding =context.getResources().  
                           getDimensionPixelSize(R.dimen.activity_vertical_margin);
                   imageView.setPadding(padding, padding, padding, padding);
                   imageView.setScaleType(ImageView.ScaleType.CENTER);
                   imageView.setImageResource(mImages[position]);
                   ((ViewPager) container).addView(imageView, 0); 


    //for Sound 
     if (mp != null) {
                    mp.reset();
                    mp.release();

                }

//the audio files are running here but not in sync with image
               mp = MediaPlayer.create(MainActivity.this,mAudio[position]);
                  mp.start();




    return imageView;
            }
                @Override
                public void destroyItem(ViewGroup container, int position, Object object) {
                  ((ViewPager) container).removeView((ImageView) object);
                }
            }
            }

这里int [] mAudio是我保存所有音频文件的数组。现在我想根据int [] mImages数组中的图像播放声音并更改音频。

1 个答案:

答案 0 :(得分:0)

修改

完成

后调用图片更改功能
mp.setOnCompletionListener(new OnCompletionListener() {
                    public void onCompletion(MediaPlayer mp) {
                        mp.release(); //here you should call your picture changed function or event what ever you have for pictures}

使用循环u可以根据您的图像更改音频。 例如,如果您的图像显然已更改,您的索引也将更改,也会使用相同的音频索引  像这样

for (int i=0;i<mImages .length;i++)
mImages [i];
mp = MediaPlayer.create(FallAnimationActivity.this,
                        mAudio [i]);
                mp.start();