1

I have an audiobook app that I'm currently working on. If the book has audio, the controller will be shown. If not, it'll only show the text. I want to switch the chapters just by swiping at the text. I'm currently using a RelativeLayout and the text is wrapped in a ScrollView. I read that I should use ViewPager. But I was wondering if I could just keep using the RelativeLayout and ScrollView.

player.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/mainbg">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/m_tab_color"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

    <LinearLayout
        android:id="@+id/player_footer_bg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#FFFFFF"
        android:gravity="center"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/linearButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp">

            <ImageButton
                android:id="@+id/btnRepeat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:background="@null"
                android:src="@drawable/btn_repeat"
                tools:ignore="ContentDescription" />

            <ImageButton
                android:id="@+id/btnShuffle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:background="@null"
                android:src="@drawable/btn_shuffle"
                tools:ignore="ContentDescription" />

            <ImageButton
                android:id="@+id/btnNext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerVertical="true"
                android:layout_toEndOf="@+id/btnPlay"
                android:background="@null"
                android:src="@drawable/btn_next"
                tools:ignore="ContentDescription" />

            <ImageButton
                android:id="@+id/btnPlay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_margin="5dp"
                android:background="@drawable/btn_play"
                android:src="@drawable/pause"
                tools:ignore="ContentDescription" />

            <ImageButton
                android:id="@+id/btnPrevious"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toStartOf="@+id/btnPlay"
                android:background="@null"
                android:src="@drawable/btn_prev"
                tools:ignore="ContentDescription" />

        </RelativeLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <FrameLayout
                android:id="@+id/ad_view_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:id="@+id/ads_startapp"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:visibility="gone">

            </RelativeLayout>

        </LinearLayout>

    </LinearLayout>

    <RelativeLayout
        android:id="@+id/sec_ssekbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/player_footer_bg"
        android:layout_centerVertical="true"
        android:background="#00ffffff"
        android:paddingLeft="7dp"
        android:paddingRight="7dp">

        <SeekBar
            android:id="@+id/songProgressBar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:progressTint="#E94C3D"
            android:thumb="@drawable/pointer"
            android:thumbTint="#E94C3D"
            android:thumbOffset="8dp"/>

        <TextView
            android:id="@+id/songCurrentDurationLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/songProgressBar"
            android:gravity="start"
            android:text="@string/current_duration"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/songTotalDurationLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_below="@+id/songProgressBar"
            android:gravity="end"
            android:text="@string/total_duration"
            android:textColor="@color/black"
            android:textStyle="bold" />

    </RelativeLayout>

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/sec_ssekbar"
        android:layout_below="@+id/toolbar"
        android:layout_centerInParent="true"
        android:layout_marginStart="3dp"
        android:layout_marginTop="3dp"
        android:layout_marginEnd="3dp"
        android:layout_marginBottom="3dp"
        android:background="#B3FFFFFF">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/text_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:layout_marginTop="3dp"
                android:layout_marginEnd="5dp"
                android:layout_marginBottom="3dp"
                android:gravity="center"
                android:text="@string/app_name"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/black"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/text_description"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginEnd="5dp"
                android:layout_marginBottom="5dp"
                android:text="@string/app_name"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/black" />

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

MusicPlayActivity.java

public class MusicPlayActivity extends AppCompatActivity implements OnCompletionListener, SeekBar.OnSeekBarChangeListener {

    Toolbar toolbar;
    private ImageButton btnPlay;
    private ImageButton btnRepeat;
    private ImageButton btnShuffle;
    private MediaPlayer mp;
    ImageView img_song;
    private int currentSongIndex = 0;
    private boolean isShuffle = false;
    private boolean isRepeat = false;
    String[] allArrayImage, allArrayMusicCatName, allArrayMusicShare;
    String[] allArrayMusicId, allArrayMusicCatId, allArrayMusicurl, allArrayMusicName, allArrayMusicDuration, allArrayMusicDesc;
    int position = currentSongIndex;
    int music_id;
    private SeekBar songProgressBar;
    private TextView songCurrentDurationLabel;
    private TextView songTotalDurationLabel;
    private Utilities utils;
    private Handler mHandler = new Handler();
    private Menu menu;

    DatabaseHandler db;
    String mp3id, mp3catid, mp3name, mp3url, mp3duration, mp3desc, mp3shareurl, mp3image, mp3catname;

    private ActionClickItem actionClickItem;
    private InterstitialAd mInterstitialAd;
    private int btNextClicked = 1;
    private AdsObj adsObj;
    private StartAppAd startAppAd;
    private boolean runClickExecuted;

    private AdView adView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.player);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {}
        });

        btnPlay = findViewById(R.id.btnPlay);
        ImageButton btnNext = findViewById(R.id.btnNext);
        ImageButton btnPrevious = findViewById(R.id.btnPrevious);
        btnRepeat = findViewById(R.id.btnRepeat);
        btnShuffle = findViewById(R.id.btnShuffle);
        TextView songTitleLabel = findViewById(R.id.text_title);
        TextView songDesc = findViewById(R.id.text_description);
        img_song = findViewById(R.id.image);
        songProgressBar = findViewById(R.id.songProgressBar);
        songCurrentDurationLabel = findViewById(R.id.songCurrentDurationLabel);
        songTotalDurationLabel = findViewById(R.id.songTotalDurationLabel);

        //imageView = (ImageView)findViewById(R.id.full_image);

//      imageLoader=new ImageLoader(this);

        db = new DatabaseHandler(this);

        toolbar = this.findViewById(R.id.toolbar);
        toolbar.setTitle(Constant.MUSIC_NAME);
        this.setSupportActionBar(toolbar);

        Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        utils = new Utilities();
        mp = new MediaPlayer();
        Intent i = getIntent();
        music_id = i.getIntExtra("POSITION", 0);
        allArrayImage = i.getStringArrayExtra("MP3_IMAGE");
        allArrayMusicCatName = i.getStringArrayExtra("MP3_CATNAME");
        allArrayMusicShare = i.getStringArrayExtra("MP3_SHARE");
        allArrayMusicId = i.getStringArrayExtra("MP3_CID");
        allArrayMusicCatId = i.getStringArrayExtra("MP3_CATID");
        allArrayMusicurl = i.getStringArrayExtra("MP3_URL");
        allArrayMusicName = i.getStringArrayExtra("MP3_NAME");
        allArrayMusicDuration = i.getStringArrayExtra("MP3_DURATION");
        allArrayMusicDesc = i.getStringArrayExtra("MP3_DISCRIPTION");

        position = getPositionFromArray(String.valueOf(music_id));
        Log.e("POSITIO", "" + position);
        playSong(position);
        songProgressBar.setOnSeekBarChangeListener(this);
        mp.setOnCompletionListener(this);

        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // check for already playing
                if (mp.isPlaying()) {
                    if (mp != null) {
                        mp.pause();
                        // Changing button image to play button
                        btnPlay.setImageResource(R.drawable.btn_play);
                    }
                } else {
                    // Resume song
                    if (mp != null) {
                        mp.start();
                        // Changing button image to pause button
                        btnPlay.setImageResource(R.drawable.btn_paush);
                    }
                }
            }
        });


        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                btNextClicked++;
                if ((btNextClicked % 3 == 0)) {
                    actionItemClicked(new ActionClickItem() {
                        @Override
                        public void runClick() {
                            // check if next song is there or not
                            if (position < (allArrayMusicurl.length - 1)) {
                                playSong(position + 1);
                                position = position + 1;
                            } else {
                                // play first song
                                playSong(0);
                                position = 0;
                            }
                        }
                    });
                } else {
                    // check if next song is there or not
                    if (position < (allArrayMusicurl.length - 1)) {
                        position = position + 1;
                        playSong(position + 1);
                    } else {
                        // play first song
                        playSong(0);
                        position = 0;
                    }
                }
            }
        });

        btnPrevious.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (position > 0) {
                    playSong(position - 1);
                    position = position - 1;
                } else {
                    // play last song
                    playSong(allArrayMusicurl.length - 1);
                    position = allArrayMusicurl.length - 1;
                }
            }
        });

        btnRepeat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (isRepeat) {
                    isRepeat = false;
                    Toast.makeText(getApplicationContext(), "Repeat is OFF", Toast.LENGTH_SHORT).show();
                    btnRepeat.setImageResource(R.drawable.btn_repeat);
                } else {
                    // make repeat to true
                    isRepeat = true;
                    Toast.makeText(getApplicationContext(), "Repeat is ON", Toast.LENGTH_SHORT).show();
                    // make shuffle to false
                    isShuffle = false;
                    btnRepeat.setImageResource(R.drawable.btn_repeat_focused);
                    btnShuffle.setImageResource(R.drawable.btn_shuffle);
                }
            }
        });

        btnShuffle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (isShuffle) {
                    isShuffle = false;
                    Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show();
                    btnShuffle.setImageResource(R.drawable.btn_shuffle);
                } else {
                    // make repeat to true
                    isShuffle = true;
                    Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show();
                    // make shuffle to false
                    isRepeat = false;
                    btnShuffle.setImageResource(R.drawable.btn_shuffle_focused);
                    btnRepeat.setImageResource(R.drawable.btn_repeat);
                }
            }
        });

        //int songIndex = i.getIntExtra("songIndex", 0);
        // Displaying Song title
        String songTitle = allArrayMusicName[position];
        songTitleLabel.setText(songTitle);
        toolbar.setTitle(songTitle);

        String musicUrl = allArrayMusicurl[position];
        if(musicUrl.equals(".")){
            songProgressBar.setVisibility(View.GONE);
            songCurrentDurationLabel.setVisibility(View.GONE);
            songTotalDurationLabel.setVisibility(View.GONE);

            RelativeLayout linearButton = findViewById(R.id.linearButton);
            linearButton.setVisibility(View.GONE);
        }

        @SuppressLint("CutPasteId") FrameLayout frameAds1 = findViewById(R.id.ad_view_container);
        AdsAssistants adsAssistants = new AdsAssistants(this);
        adsObj = adsAssistants.getSessionAdsObj();

        if (adsObj != null) {
            if (adsObj.getCurrentActivatedAds().equals(AdsConfig.ADS_ADMOB)) {
                frameAds1.setVisibility(View.VISIBLE);

                adsAssistants.createAdmobBanner(frameAds1, adsObj.getADS_ADMOB_BANNER());
            } else {
                startAppAd = new StartAppAd(this);

                @SuppressLint("CutPasteId") FrameLayout frameAds = findViewById(R.id.ad_view_container);
                frameAds.setVisibility(View.VISIBLE);

                adsAssistants.createStartAppBanner(frameAds);
            }
        }
    }

    public void actionItemClicked(ActionClickItem actionClickItemParam) {
        actionClickItem = actionClickItemParam;
        if (adsObj == null) {
            actionClickItem.runClick();
        } else {
            if (adsObj.getCurrentActivatedAds().equals(AdsConfig.ADS_ADMOB)) {
                if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    actionClickItem.runClick();
                    generateInterstitialAd();
                }
            } else {
                startAppAd.loadAd(new AdEventListener() {
                    @Override
                    public void onReceiveAd(Ad ad) {
                    }
                    @Override
                    public void onFailedToReceiveAd(Ad ad) {
//                    actionClickItem.runClick();
                    }
                });

                StartAppAd.disableAutoInterstitial();
                startAppAd.showAd(new AdDisplayListener() {
                    @Override
                    public void adHidden(Ad ad) {
                        if(!runClickExecuted){
                            runClickExecuted = true;
                            actionClickItem.runClick();
                        }
                        Log.d("YWV", "Action clicked");
                    }

                    @Override
                    public void adDisplayed(Ad ad) {
                    }

                    @Override
                    public void adClicked(Ad ad) {
                    }

                    @Override
                    public void adNotDisplayed(Ad ad) {
                    }
                });
            }
        }
    }

    private void generateInterstitialAd() {
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(adsObj.getADS_ADMOB_INTERSTITIALS());
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
//                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
//                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdClosed() {
                // Proceed to the next level.
                //finish();
                //showDialogApp();
                actionClickItem.runClick();
                generateInterstitialAd();
            }
        });
        AdRequest adRequestIn = new AdRequest.Builder().build();
        mInterstitialAd.loadAd(adRequestIn);
    }

    @Override
    protected void onActivityResult(int requestCode,
                                    int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 100) {
            position = Objects.requireNonNull(data.getExtras()).getInt("songIndex");
            // play selected song
            playSong(position);

        }else if(resultCode == 11){
            runClickExecuted = false;
        }
    }

    public void playSong(int songIndex) {
        // Play song
        try {
//          if(needResetFirst){
            mp.reset();
//          }
            mp.setDataSource(allArrayMusicurl[songIndex]);
            mp.prepare();
            mp.start();

//            // Displaying Song title
            TextView songTitleLabel = findViewById(R.id.text_title);
            String songTitle = allArrayMusicName[songIndex];
            songTitleLabel.setText(songTitle);
            toolbar.setTitle(songTitle);

            TextView songDesc = findViewById(R.id.text_description);
            String songDescd = allArrayMusicDesc[songIndex];
            songDesc.setText(songDescd);

            //          Toast.makeText(getApplicationContext(), img_name,Toast.LENGTH_SHORT).show();

//          imageLoader.DisplayImage(Constant.SERVER_IMAGE_UPFOLDER1+img_name, imageView);
//          Log.e("IMAGEPATH", ""+Constant.SERVER_IMAGE_UPFOLDER1+img_name);
//          Toast.makeText(getApplicationContext(), Constant.SERVER_IMAGE_UPFOLDER1+img_name,Toast.LENGTH_SHORT).show();

            // Changing Button Image to pause image
            btnPlay.setImageResource(R.drawable.btn_paush);

            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);

            // Updating progress bar
            updateProgressBar();

            // set Progress bar values
        } catch (IllegalArgumentException | IllegalStateException | IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCompletion(MediaPlayer arg0) {
        // check for repeat is ON or OFF
        if (isRepeat) {
            // repeat is on play same song again
            playSong(position);
        } else if (isShuffle) {
            // shuffle is on - play a random song
            Random rand = new Random();
            position = rand.nextInt((allArrayMusicurl.length - 1) + 1);
            playSong(position);
        } else {
            // no repeat or shuffle ON - play next song
            if (position < (allArrayMusicurl.length - 1)) {
                playSong(position + 1);
                position = position + 1;
            } else {
                // play first song
                playSong(0);
                position = 0;
            }
        }
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        if (mp != null) {
            mp.reset();
            mp.release();
            mp = null;
            mHandler.removeCallbacks(mUpdateTimeTask);
        }
        setResult(RESULT_OK);
        finish();
    }

    public void updateProgressBar() {
        mHandler.postDelayed(mUpdateTimeTask, 100);
    }

    private Runnable mUpdateTimeTask = new Runnable() {
        public void run() {
            long totalDuration = mp.getDuration();
            long currentDuration = mp.getCurrentPosition();

            // Displaying Total Duration time
            songTotalDurationLabel.setText(utils.milliSecondsToTimer(totalDuration));
            // Displaying time completed playing
            songCurrentDurationLabel.setText(utils.milliSecondsToTimer(currentDuration));

            // Updating progress bar
            int progress = utils.getProgressPercentage(currentDuration, totalDuration);
            //Log.d("Progress", ""+progress);
            songProgressBar.setProgress(progress);

            // Running this thread after 100 milliseconds
            mHandler.postDelayed(this, 100);
        }
    };

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // remove message Handler from updating progress bar
        mHandler.removeCallbacks(mUpdateTimeTask);
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        mHandler.removeCallbacks(mUpdateTimeTask);
        int totalDuration = mp.getDuration();
        int currentPosition = utils.progressToTimer(seekBar.getProgress(), totalDuration);

        // forward or backward to certain seconds

        mp.seekTo(currentPosition);

        // update timer progress again
        updateProgressBar();
    }

    public void AddtoFav(int position) {
        mp3id = allArrayMusicId[position];
        //      mp3catid=allArrayMusicCatId[position];
        mp3catname = allArrayMusicCatName[position];
        mp3url = allArrayMusicurl[position];
        mp3image = allArrayImage[position];
        mp3name = allArrayMusicName[position];
        mp3duration = allArrayMusicDuration[position];
        mp3desc = allArrayMusicDesc[position];
        //      mp3shareurl=allArrayMusicShare[position];

        db.AddtoFavorite(new Pojo(mp3id, mp3catid, mp3catname, mp3url, mp3image, mp3name, mp3duration, mp3desc, mp3shareurl));
        Toast.makeText(getApplicationContext(), "Added to Favorite", Toast.LENGTH_SHORT).show();
        //      fabfav.setImageDrawable(getResources().getDrawable(R.drawable.fav_hover));

    }

    //remove from favorite
    public void RemoveFav(int position) {
        mp3id = allArrayMusicId[position];
        db.RemoveFav(new Pojo(mp3id));
        Toast.makeText(getApplicationContext(), "Removed from Favorite", Toast.LENGTH_SHORT).show();
        //      fabfav.setImageDrawable(getResources().getDrawable(R.drawable.fav_hover));
    }

    public void FirstFav() {
        mp3id = allArrayMusicId[position];
        List<Pojo> pojolist = db.getFavRow(mp3id);
        if (pojolist.size() == 0) {
            menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.fav));
        } else {
            if (pojolist.get(0).getMp3Id().equals(mp3id)) {
                menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.fav_hover));
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_mp3, menu);
        this.menu = menu;
        //for when 1st item of view pager is favorite mode
        FirstFav();
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            case R.id.menu_fav:
                mp3id = allArrayMusicId[position];
                List<Pojo> pojolist = db.getFavRow(mp3id);
                if (pojolist.size() == 0) {
                    AddtoFav(position);//if size is zero i.e means that record not in database show add to favorite
                    menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.fav_hover));
                } else {
                    if (pojolist.get(0).getMp3Id().equals(mp3id)) {
                        RemoveFav(position);
                    }
                    menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.fav));
                }
                return true;
            case R.id.menu_share:
                Intent sharingIntent = new Intent(Intent.ACTION_SEND);
                sharingIntent.putExtra(Intent.EXTRA_TEXT, "Listen to this verse from " + Constant.APP_NAME + "\n" + "http://play.google.com/store/apps/details?id=" + getPackageName());
                sharingIntent.setType("text/plain");
                startActivity(Intent.createChooser(sharingIntent, "Share Link"));
                return true;
            default:
                return super.onOptionsItemSelected(menuItem);
        }
    }

    public int getPositionFromArray(String id) {
        return Arrays.asList(allArrayMusicId).indexOf(id);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (adView != null) {
            adView.resume();
        }
    }

    /** Called when leaving the activity */
    @Override
    public void onPause() {
        if (adView != null) {
            adView.pause();
        }
        super.onPause();
    }
    /** Called before the activity is destroyed */
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mp != null) {
            mp.reset();
            mp.release();
            mHandler.removeCallbacks(mUpdateTimeTask);
            mp = null;
        }
        finish();
        if (adView != null) {
            adView.destroy();
        }
    }
}

Thank you in advance !

2 Answers2

2

You can detect gestures on any View by attaching an onTouchListener to it.

In your case however, you are trying to detect swiping gestures, therefore the best solution is to create a gesture detector class by extending an onTouchListener like in this tutorial (step 4):

https://www.tutorialspoint.com/how-to-handle-right-to-left-and-left-to-right-swipe-gestures-on-android

After doing this, you can easily attach the swipe-detector class to any of your views as:

textView.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this) {
             @Override
             public void onSwipeLeft() {
                super.onSwipeLeft();
                // do something
             }
             @Override
             public void onSwipeRight() {
                super.onSwipeRight();
                // do something
             }
          });
0

Have you tried to add and OnSwipeTouchListener like here https://stackoverflow.com/a/12938787/4330467? Relativelayout should not be the issue

Sempui22
  • 13
  • 6