MainActivity.
java
package com.example.imageapplication;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ViewSwitcher;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
ImageSwitcher imageSwitcher;
Button previous, next, openGrid;
int[] imageIds = {R.drawable.rose1, R.drawable.rose2, R.drawable.rose3, R.drawable.rose1, R.drawable.rose2,
R.drawable.rose3};
int count = imageIds.length;
int currentIndex = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher = findViewById(R.id.imageimageSwitcher1);
previous = findViewById(R.id.button);
next = findViewById(R.id.button2);
openGrid = findViewById(R.id.openGridButton);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView imageView = new ImageView(getApplicationContext());
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
return imageView;
}
});
Animation in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
Animation out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);
imageSwitcher.setImageResource(imageIds[currentIndex]);
previous.setOnClickListener(v -> {
currentIndex--;
if (currentIndex < 0)
currentIndex = count - 1;
imageSwitcher.setImageResource(imageIds[currentIndex]);
});
next.setOnClickListener(v -> {
currentIndex++;
if (currentIndex == count)
currentIndex = 0;
imageSwitcher.setImageResource(imageIds[currentIndex]);
});
openGrid.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, GridActivity.class);
startActivity(intent);
});
}
}
GridActivity.java
package com.example.imageapplication;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class GridActivity extends AppCompatActivity {
int[] imageIds = {R.drawable.rose1, R.drawable.rose2, R.drawable.rose3, R.drawable.rose1, R.drawable.rose2,
R.drawable.rose3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
GridView gridView = findViewById(R.id.gridView1);
gridView.setAdapter(new ImageAdapter(this, imageIds));
gridView.setOnItemClickListener((parent, view, position, id) -> {
Toast.makeText(getApplicationContext(), "Picture " + (position + 1) + " Selected",
Toast.LENGTH_SHORT).show();
});
}
private static class ImageAdapter extends BaseAdapter {
Context context;
int[] imageIds;
public ImageAdapter(Context context, int[] imageIds) {
this.context = context;
this.imageIds = imageIds;
}
@Override
public int getCount() {
return imageIds.length;
}
@Override
public Object getItem(int position) {
return imageIds[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new ViewGroup.LayoutParams(150, 150));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 5, 5, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIds[position]);
return imageView;
}
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<ImageSwitcher
android:id="@+id/imageimageSwitcher1"
android:layout_width="match_parent"
android:layout_height="300dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="16dp">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Previous" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next"
android:layout_marginLeft="16dp" />
</LinearLayout>
<Button
android:id="@+id/openGridButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Grid View"
android:layout_marginTop="24dp"
android:layout_gravity="center_horizontal" />
</LinearLayout>
activity_grid.xml
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:padding="10dp"
android:stretchMode="columnWidth"
android:gravity="center" />