Android Open Source - Common-Library Fall Ball View






From Project

Back to project page Common-Library.

License

The source code is released under:

Apache License

If you think the Android project Common-Library listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.morgan.library.widget;
//from ww w  . j a v  a  2  s.  c o m
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.BounceInterpolator;
import android.view.animation.Interpolator;
import android.widget.ImageView;

/**
 * ???????????????ImageView
 * 
 * @author Morgan.Ji
 * 
 */
public class FallBallView extends ImageView {

  private static final int ANIMATION_MOVE = 0;
  private static final int ANIMATION_END = -1;
  private static final int DIVID_COUNT = 100;
  private static final int TRANSLATE_TIME = 1000;
  private int mStartX, mStartY;
  private int mEndX, mEndY;
  private Interpolator mInterpolator;
  private FallListener mOnFallListener;

  public FallBallView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mInterpolator = new BounceInterpolator();
  }

  public void start() {
    if (null != mOnFallListener) {
      mOnFallListener.onfallStart();
    }
    new FallThread().start();
  }

  @SuppressLint("HandlerLeak")
  private Handler mHandler = new Handler() {
    @Override
    public void dispatchMessage(Message msg) {
      if (msg.what == ANIMATION_MOVE) {
        // FallBallWidget.this.setTranslationX(msg.arg1);
        // FallBallWidget.this.setTranslationY(msg.arg2);
        FallBallView.this.layout(mStartX + msg.arg1,
            mStartY + msg.arg2, mStartX + msg.arg1 + getWidth(),
            mStartY + msg.arg2 + getHeight());
      } else if (msg.what == ANIMATION_END) {
        // FallBallWidget.this.setTranslationX(0);
        // FallBallWidget.this.setTranslationY(0);
        FallBallView.this.layout(mStartX, mStartY,
            mStartX + getWidth(), mStartY + getHeight());
        FallBallView.this.setVisibility(View.INVISIBLE);
        if (null != mOnFallListener) {
          mOnFallListener.onfalled();
        }
      }
    }
  };

  class FallThread extends Thread {

    @Override
    public void run() {
      int xLength = mEndX - mStartX;
      int yLength = mEndY - mStartY;
      int start = 1;
      while (start <= DIVID_COUNT) {
        try {
          Message msg = mHandler.obtainMessage();
          msg.what = ANIMATION_MOVE;
          msg.arg1 = (int) (xLength * ((double) start / DIVID_COUNT));
          msg.arg2 = (int) (yLength * mInterpolator
              .getInterpolation((float) ((double) start / DIVID_COUNT)));
          mHandler.sendMessage(msg);
          Thread.sleep(TRANSLATE_TIME / DIVID_COUNT);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        start++;
      }
      mHandler.sendEmptyMessage(ANIMATION_END);
    }
  }

  public void setStartX(int mStartX) {
    this.mStartX = mStartX;
  }

  public void setStartY(int mStartY) {
    this.mStartY = mStartY;
  }

  public void setEndX(int mEndX) {
    this.mEndX = mEndX;
  }

  public void setEndY(int mEndY) {
    this.mEndY = mEndY;
  }

  public void setOnFallListener(FallListener mOnFallListener) {
    this.mOnFallListener = mOnFallListener;
  }

  public interface FallListener {

    public void onfallStart();

    public void onfalled();
  }
}




Java Source Code List

com.morgan.library.app.APPContext.java
com.morgan.library.app.AppManager.java
com.morgan.library.app.BaseActivity.java
com.morgan.library.app.BaseFragmentActivity.java
com.morgan.library.app.BaseListActivity.java
com.morgan.library.app.BaseScreenShotActivity.java
com.morgan.library.app.CommonApplication.java
com.morgan.library.async.CustomAsyncTask.java
com.morgan.library.async.Destroyable.java
com.morgan.library.async.IFeedback.java
com.morgan.library.async.TaskManager.java
com.morgan.library.model.NetResult.java
com.morgan.library.model.SpinnerItem.java
com.morgan.library.model.WeatherType.java
com.morgan.library.model.Weather.java
com.morgan.library.net.ApiClient.java
com.morgan.library.net.ApiManager.java
com.morgan.library.net.ApiUrl.java
com.morgan.library.net.IApiClient.java
com.morgan.library.net.JsonUtils.java
com.morgan.library.net.MockApiClient.java
com.morgan.library.service.LocationManager.java
com.morgan.library.service.WeatherManager.java
com.morgan.library.snippet.CookieShare.java
com.morgan.library.snippet.CustomService.java
com.morgan.library.snippet.ExceptionCatcher.java
com.morgan.library.snippet.ProxyUsage.java
com.morgan.library.snippet.SocketClient.java
com.morgan.library.snippet.SocketServer.java
com.morgan.library.snippet.UDPClient.java
com.morgan.library.snippet.UDPServer.java
com.morgan.library.snippet.XMLAnalyze.java
com.morgan.library.task.GetWeatherTask.java
com.morgan.library.utils.AppUtils.java
com.morgan.library.utils.DateUtils.java
com.morgan.library.utils.DensityUtils.java
com.morgan.library.utils.FileUtils.java
com.morgan.library.utils.GB2Alpha.java
com.morgan.library.utils.HttpClientUtil.java
com.morgan.library.utils.HttpClientUtils.java
com.morgan.library.utils.HttpURLUtil.java
com.morgan.library.utils.ImageUtils.java
com.morgan.library.utils.KeyBoardUtils.java
com.morgan.library.utils.LocationUtils.java
com.morgan.library.utils.Logger.java
com.morgan.library.utils.NetUtils.java
com.morgan.library.utils.PhoneUtils.java
com.morgan.library.utils.SDCardUtils.java
com.morgan.library.utils.StrUtils.java
com.morgan.library.widget.AutoHideMenuWidget.java
com.morgan.library.widget.BadgeView.java
com.morgan.library.widget.CityPickerWidget.java
com.morgan.library.widget.CustomGridView.java
com.morgan.library.widget.CustomListView.java
com.morgan.library.widget.CustomToast.java
com.morgan.library.widget.CustomViewPager.java
com.morgan.library.widget.DatePickerWidget.java
com.morgan.library.widget.DirectionScrollView.java
com.morgan.library.widget.FallBallView.java
com.morgan.library.widget.HeightPickerWidget.java
com.morgan.library.widget.InterceptPressLayout.java
com.morgan.library.widget.ItalicTextView.java
com.morgan.library.widget.PopupMenuWidget.java
com.morgan.library.widget.PullToRefreshListView.java
com.morgan.library.widget.ScreenShotView.java
com.morgan.library.widget.SexPickerWidget.java
com.morgan.library.widget.SlideUpOpenWidget.java
com.morgan.library.widget.SwipeListView.java
com.morgan.library.widget.TimePickerWidget.java
com.morgan.library.widget.TouchZoomImageView.java
com.morgan.library.widget.WaitScreenWidget.java
com.morgan.library.widget.WebViewDialog.java
com.morgan.library.widget.WeightPickerWidget.java
com.morgan.library.widget.calendar.CalendarGridView.java
com.morgan.library.widget.calendar.CalendarScrollView.java
com.morgan.library.widget.calendar.CalendarViewFlipper.java
com.morgan.library.widget.calendar.CalendarWidget.java
com.morgan.library.widget.numberpicker.NumberPicker.java
com.morgan.library.widget.numberpicker.Scroller.java
com.morgan.library.widget.slidemenu.ScrollDetectorFactory.java
com.morgan.library.widget.slidemenu.ScrollDetectors.java
com.morgan.library.widget.slidemenu.SlideMenu.java