If you own a cat, you probably own a laser pointer. Endless entertainment can be found by watching your cat chase around a speck of light.
Now you can experience laser pointer excitement every time you charge your Android phone.
Android Daydreams
Daydreams are basically screensavers that run while your phone is charging. They provide a bit of visual entertainment while your phone is idle.
Code
AnimatorListenerAdapter
private final AnimatorListener mAnimListener = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { // Start animation again try { elusiveDotAnimation(); } catch(Exception e) { Log.e(TAG, e.getMessage()); } } };
onAttachedToWindow
@Override public void onAttachedToWindow() { super.onAttachedToWindow(); //read preferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean prefInteractive = prefs.getBoolean(getString(R.string.pref_dream_interactive_key), false); boolean prefFullscreen = prefs.getBoolean(getString(R.string.pref_dream_fullscreen_key), false); // set screen preferences setInteractive(prefInteractive); setFullscreen(prefFullscreen); // Set the content view, just like you would with an Activity. setContentView(R.layout.dot_daydream); //red_dot mImageView = (ImageView)findViewById(R.id.dream_image); mImageView.setImageResource(R.drawable.reddot); }
elusiveDotAnimation
private void elusiveDotAnimation() { // Refresh Size of Window getWindowManager().getDefaultDisplay().getSize(mPointSize); final int windowWidth = mPointSize.x; final int windowHeight = mPointSize.y; // Move ImageView to random y value mImageView.setTranslationX(mLastX); mImageView.setTranslationY(mLastY); //get new random positions int xRange = windowWidth - mImageView.getWidth(); int yRange = windowHeight - mImageView.getHeight(); mLastX = randInt(0, xRange); mLastY = randInt(0, yRange); // Create an Animator and keep a reference to it int randDuration = randInt(200, 1500); mAnimator = mImageView.animate() .translationX(mLastX) .translationY(mLastY) .setDuration(randDuration) .setListener(mAnimListener) .setInterpolator(sInterpolator); // Start the animation mAnimator.start(); }