How to blink image in ImageView (Android)

22,013

Solution 1

The following code snippet will blink the ImageView . Set the background of ImageView as Transparent.

    Animation animation = new AlphaAnimation(1, 0); //to change visibility from visible to invisible 
    animation.setDuration(1000); //1 second duration for each animation cycle 
    animation.setInterpolator(new LinearInterpolator()); 
    animation.setRepeatCount(Animation.INFINITE); //repeating indefinitely 
    animation.setRepeatMode(Animation.REVERSE); //animation will start from end point once ended.
    imageButton.startAnimation(animation); //to start animation

Solution 2

**Try this code **

image = (ImageView) findViewById(R.id.image);
Animation animation = new AlphaAnimation((float) 0.5, 0); // Change alpha from fully visible to invisible
animation.setDuration(500); // duration - half a second
animation.setInterpolator(new LinearInterpolator()); // do not alter
                                                     // animation
                                                     // rate
animation.setRepeatCount(Animation.INFINITE); // Repeat animation
                                              // infinitely
animation.setRepeatMode(Animation.REVERSE); // Reverse animation at the
                                            // end so the button will
                                            // fade back in
image.startAnimation(animation);
Share:
22,013
question
Author by

question

Updated on June 22, 2020

Comments

  • question
    question about 4 years

    I am working on a wallpaper app in which I am displaying image with ImageView as a splash screen.

    Now I want to blink ImageView image as a splash screen.

    This is my splash screen code:

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Window;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    import com.android.volley.Request.Method;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.JsonObjectRequest;
    import com.usd.amazingwallpapershd.app.AppConst;
    import com.usd.amazingwallpapershd.app.AppController;
    import com.usd.amazingwallpapershd.picasa.model.Category;
    
    @SuppressLint("NewApi")
    public class SplashActivity extends Activity {
        private static final String TAG = SplashActivity.class.getSimpleName();
        private static final String TAG_FEED = "feed", TAG_ENTRY = "entry",
                TAG_GPHOTO_ID = "gphoto$id", TAG_T = "$t",
                TAG_ALBUM_TITLE = "title";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
            getActionBar().hide();
            setContentView(R.layout.activity_splash);
    
            // //splash images array
            // Randomise a background
            // int[] yourListOfImages = { R.drawable.splash_8, R.drawable.splash_8
            // };
            int[] yourListOfImages = { R.drawable.splash_1, R.drawable.splash_2,
                    R.drawable.splash_3, R.drawable.splash_4 };
    
            Random random = new Random(System.currentTimeMillis());
            int posOfImage = random.nextInt(yourListOfImages.length - 1);
    
            ImageView imageView = (ImageView) findViewById(R.id.splash_imageview);
            imageView.setBackgroundResource(yourListOfImages[posOfImage]);
            // //
    
            // //
    
            // Picasa request to get list of albums
            String url = AppConst.URL_PICASA_ALBUMS
                    .replace("_PICASA_USER_", AppController.getInstance()
                            .getPrefManger().getGoogleUserName());
    
            Log.d(TAG, "Albums request url: " + url);
    
            // Preparing volley's json object request
            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, url,
                    null, new Response.Listener<JSONObject>() {
    
                        @Override
                        public void onResponse(JSONObject response) {
                            Log.d(TAG, "Albums Response: " + response.toString());
                            List<Category> albums = new ArrayList<Category>();
                            try {
                                // Parsing the json response
                                JSONArray entry = response.getJSONObject(TAG_FEED)
                                        .getJSONArray(TAG_ENTRY);
    
                                // loop through albums nodes and add them to album
                                // list
                                for (int i = 0; i < entry.length(); i++) {
                                    JSONObject albumObj = (JSONObject) entry.get(i);
                                    // album id
                                    String albumId = albumObj.getJSONObject(
                                            TAG_GPHOTO_ID).getString(TAG_T);
    
                                    // album title
                                    String albumTitle = albumObj.getJSONObject(
                                            TAG_ALBUM_TITLE).getString(TAG_T);
    
                                    Category album = new Category();
                                    album.setId(albumId);
                                    album.setTitle(albumTitle);
    
                                    // add album to list
                                    albums.add(album);
    
                                    Log.d(TAG, "Album Id: " + albumId
                                            + ", Album Title: " + albumTitle);
                                }
    
                                // Store albums in shared pref
                                AppController.getInstance().getPrefManger()
                                        .storeCategories(albums);
    
                                // String the main activity
                                Intent intent = new Intent(getApplicationContext(),
                                        MainActivity.class);
                                startActivity(intent);
                                // closing spalsh activity
                                finish();
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                                Toast.makeText(getApplicationContext(),
                                        getString(R.string.msg_unknown_error),
                                        Toast.LENGTH_LONG).show();
                            }
    
                        }
                    }, new Response.ErrorListener() {
    
                        @SuppressWarnings("deprecation")
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.e(TAG, "Volley Error: " + error.getMessage());
    
                            // show error toast
                            Toast.makeText(getApplicationContext(),
                                    getString(R.string.splash_error),
                                    Toast.LENGTH_LONG).show();
    
                            // Unable to fetch albums
                            // check for existing Albums data in Shared Preferences
                            if (AppController.getInstance().getPrefManger()
                                    .getCategories() != null
                                    && AppController.getInstance().getPrefManger()
                                            .getCategories().size() > 0) {
                                // String the main activity
                                Intent intent = new Intent(getApplicationContext(),
                                        MainActivity.class);
                                startActivity(intent);
                                // closing spalsh activity
                                finish();
                            } else {
                                // Albums data not present in the shared preferences
                                // Launch settings activity, so that user can modify
                                // the settings
    
                                // Intent i = new Intent(SplashActivity.this,
                                // SettingsActivity.class);
                                // // clear all the activities
                                // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                // | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                // startActivity(i);
    
                                AlertDialog alertDialog = new AlertDialog.Builder(
                                        SplashActivity.this).create();
                                alertDialog
                                        .setMessage("Please connect to the internet and try again");
                                alertDialog.setButton("OK",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                                finish();
                                            }
                                        });
                                alertDialog.show();
    
                            }
    
                        }
                    });
    
            // disable the cache for this request, so that it always fetches updated
            // json
            jsonObjReq.setShouldCache(false);
    
            // Making the request
            AppController.getInstance().addToRequestQueue(jsonObjReq);
    
        }
    
    }
    

    and this is BlinkActivity code:

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.animation.Animation;
    import android.view.animation.Animation.AnimationListener;
    import android.view.animation.AnimationUtils;
    import android.widget.ImageView;
    
    public class BlinkActivity extends Activity implements AnimationListener {
    
        ImageView img;
    
        // Animation
        Animation animBlink;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash);
    
            img = (ImageView) findViewById(R.id.splash_imageview);
    
            // load the animation
            animBlink = AnimationUtils.loadAnimation(getApplicationContext(),
                    R.anim.blink);
    
            // set animation listener
            animBlink.setAnimationListener(this);
    
            // start the animation
            img.startAnimation(animBlink);
    
        }
    
        @Override
        public void onAnimationEnd(Animation animation) {
            // Take any action after completing the animation
    
            // check for blink animation
            if (animation == animBlink) {
            }
    
        }
    
        @Override
        public void onAnimationRepeat(Animation animation) {
    
        }
    
        @Override
        public void onAnimationStart(Animation animation) {
    
        }
    
    }
    

    But I'm not understanding how do I implement both together to make it work?

  • question
    question over 9 years
    well its blinking very slow how to blink it fast.
  • Don Chakkappan
    Don Chakkappan over 9 years
    Change the duration as you wish using setDuration()
  • question
    question over 9 years
    how to setDuration below "0"
  • Jacksonkr
    Jacksonkr over 8 years
    @question It's the value in milliseconds so a value of 1000 means 1 second. Set the value to 5000 for 5 seconds for 10000 for 10 seconds, etc etc.
  • milosmns
    milosmns about 8 years
    What do you want to achieve with blinking interval lower than 0?
  • Admin
    Admin almost 6 years
    its blinking only once , how to blink continue ?
  • akshay bhange
    akshay bhange over 5 years
    animation.setRepeatCount(Animation.INFINITE); this line will keep it blinking indefinitely. please check if you have missed this line.
  • MustafaShaikh
    MustafaShaikh almost 5 years
    How can we animate drawble imageView..???