0% found this document useful (0 votes)
19 views6 pages

Assignment 15 MC 007

Uploaded by

sujata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views6 pages

Assignment 15 MC 007

Uploaded by

sujata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

SIES College of Management Studies SYMCA (Revised), Sem III,

Roll No: 07

Assignment - 15

Write an android program for Image animation and color effects. (Move, Rotate, Scale,
zoom in, zoom out, Fade In, Fade Out, Bounce, Invert Colors, Gray).
Code:
MainActivity.java:
package com.example.p15;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {


private ImageView imageView;
private Button btn_move, btn_rotate, btn_scale, btn_bounce, btn_zoomIn,
btn_zoomOut, btn_fadeIn, btn_fadeOut, btn_invert, btn_gray;
boolean isInvert,isGray = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
btn_move = findViewById(R.id.btn_move);
btn_rotate = findViewById(R.id.btn_rotate);
btn_scale = findViewById(R.id.btn_scale);
btn_bounce = findViewById(R.id.btn_bounce);
btn_zoomIn = findViewById(R.id.btn_zoomIn);
btn_zoomOut = findViewById(R.id.btn_zoomOut);
btn_fadeIn = findViewById(R.id.btn_fadeIn);
btn_fadeOut = findViewById(R.id.btn_fadeOut);
btn_invert = findViewById(R.id.btn_invert);
btn_gray = findViewById(R.id.btn_gray);

btn_move.setOnClickListener(new View.OnClickListener() {
@Override
Subject: MCAL34 Mobile Computing Lab Academic Year
First Half 2023_24
SIES College of Management Studies SYMCA (Revised), Sem III,
Roll No: 07

public void onClick(View v) {


moveImage();
}
});

btn_rotate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rotateImage();
}
});

btn_scale.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scaleImage();
}
});

btn_bounce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bounceImage();
}
});

btn_zoomIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomImage();
}
});

btn_zoomOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomOutImage();
}
});

btn_fadeIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fadeInImage();
}
});

Subject: MCAL34 Mobile Computing Lab Academic Year


First Half 2023_24
SIES College of Management Studies SYMCA (Revised), Sem III,
Roll No: 07

btn_fadeOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fadeOutImage();
}
});

btn_invert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { invertImage();}
});

btn_gray.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { grayImage();}
});
}

private void moveImage() {


TranslateAnimation animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.1f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.1f);
animation.setDuration(1000);
imageView.startAnimation(animation);
}

private void rotateImage() {


RotateAnimation animation = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(1000);
imageView.startAnimation(animation);
}

private void scaleImage() {


ScaleAnimation animation = new ScaleAnimation(
1f, 2f,
1f, 2f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(1000);
imageView.startAnimation(animation);
}

private void bounceImage() {


Subject: MCAL34 Mobile Computing Lab Academic Year
First Half 2023_24
SIES College of Management Studies SYMCA (Revised), Sem III,
Roll No: 07

Animation animation = AnimationUtils.loadAnimation(this, R.anim.bounce);


animation.setDuration(1000);
imageView.startAnimation(animation);
}

private void zoomImage(){


ScaleAnimation animation = new ScaleAnimation(
imageView.getScaleX(), imageView.getScaleX()+0.5f,
imageView.getScaleY(), imageView.getScaleY()+0.5f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
animation.setFillAfter(true);
animation.setFillBefore(true);
animation.setDuration(1000);
imageView.startAnimation(animation);
imageView.setScaleX(imageView.getScaleX()+0.5f);
imageView.setScaleY(imageView.getScaleY()+0.5f);
}

private void zoomOutImage(){


ScaleAnimation animation = new ScaleAnimation(
imageView.getScaleX(), imageView.getScaleX()-0.5f,
imageView.getScaleY(), imageView.getScaleX()-0.5f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
animation.setFillAfter(true);
animation.setFillBefore(true);
animation.setDuration(1000);
imageView.startAnimation(animation);
imageView.setScaleX(imageView.getScaleX()-0.5f);
imageView.setScaleY(imageView.getScaleY()-0.5f);
}
private void fadeInImage(){
AlphaAnimation animation = new AlphaAnimation(0f,1f);
animation.setFillAfter(true);
animation.setFillBefore(true);
animation.setDuration(1000);
imageView.startAnimation(animation);
}
private void fadeOutImage(){
AlphaAnimation animation = new AlphaAnimation(1f,0f);
animation.setFillAfter(true);
animation.setFillBefore(true);
animation.setDuration(1000);
imageView.startAnimation(animation);
}
private void invertImage() {
Subject: MCAL34 Mobile Computing Lab Academic Year
First Half 2023_24
SIES College of Management Studies SYMCA (Revised), Sem III,
Roll No: 07

Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),


R.drawable.google);
Bitmap invertedBitmap = Bitmap.createBitmap(originalBitmap.getWidth(),
originalBitmap.getHeight(), originalBitmap.getConfig());
if(isInvert){
imageView.setImageBitmap(originalBitmap);
isInvert = false;
}
else{
for (int x = 0; x < originalBitmap.getWidth(); x++) {
for (int y = 0; y < originalBitmap.getHeight(); y++) {
int pixel = originalBitmap.getPixel(x, y);
int alpha = Color.alpha(pixel);
int red = 255 - Color.red(pixel);
int green = 255 - Color.green(pixel);
int blue = 255 - Color.blue(pixel);
invertedBitmap.setPixel(x, y, Color.argb(alpha, red, green, blue));
}
}
imageView.setImageBitmap(invertedBitmap);
isInvert = true;
}
}
private void grayImage() {
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.google);
Bitmap grayscaleBitmap = Bitmap.createBitmap(originalBitmap.getWidth(),
originalBitmap.getHeight(), originalBitmap.getConfig());
if(isGray){
imageView.setImageBitmap(originalBitmap);
isGray = false;
}
else{
for (int x = 0; x < originalBitmap.getWidth(); x++) {
for (int y = 0; y < originalBitmap.getHeight(); y++) {
int pixel = originalBitmap.getPixel(x, y);
int alpha = Color.alpha(pixel);
int gray = (Color.red(pixel) + Color.green(pixel) + Color.blue(pixel)) / 3;
grayscaleBitmap.setPixel(x, y, Color.argb(alpha, gray, gray, gray));
}
}
imageView.setImageBitmap(grayscaleBitmap);
isGray = true;
}
}
}

Subject: MCAL34 Mobile Computing Lab Academic Year


First Half 2023_24
SIES College of Management Studies SYMCA (Revised), Sem III,
Roll No: 07

Output:

Subject: MCAL34 Mobile Computing Lab Academic Year


First Half 2023_24

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy