1. Create a new project and download these sample images. Save the image files into the project's res/drawable/ directory.
2. Open the res/layout/activity_main.xml file and insert the following:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:max="10" />
    </LinearLayout>
</ScrollView>
3. Open MainActivity.java and insert the following code for the onCreate() method:
MainActivity.java
package com.grrigore.dynamicgridview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
public class MainActivity extends AppCompatActivity {
    private int numberOfCurrentImages = 0;
    private int[] images = {
            R.drawable.sample_0,
            R.drawable.sample_1,
            R.drawable.sample_2,
            R.drawable.sample_3,
            R.drawable.sample_4,
            R.drawable.sample_5,
            R.drawable.sample_6,
            R.drawable.sample_7,
            R.drawable.sample_0,
            R.drawable.sample_1,
            R.drawable.sample_2
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final LinearLayout linearLayout = findViewById(R.id.linearLayout);
        SeekBar seekBar = findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                for (int i = numberOfCurrentImages; i < progress; i++) {
                    ImageView imageView = new ImageView(MainActivity.this);
                    imageView.setImageResource(images[numberOfCurrentImages]);
                    linearLayout.addView(imageView);
                    numberOfCurrentImages++;
                }
                if (progress == 0 && linearLayout.getChildCount() > 1) {
                    linearLayout.removeViews(1, numberOfCurrentImages);
                    numberOfCurrentImages = 0;
                }
                if (progress < numberOfCurrentImages) {
                    for (int i = numberOfCurrentImages; i > progress; i--) {
                        linearLayout.removeViewAt(i);
                    }
                    numberOfCurrentImages = progress;
                }
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });
    }
}
This is the result.
Thanks to: