java类android.graphics.drawable.Animatable的实例源码

MainActivity.java 文件源码 项目:GitHub 阅读 34 收藏 0 点赞 0 评论 0
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("Anim Items");

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (menu != null) {
                for (int i = 0; i < menu.size(); i++) {
                    Drawable drawable = menu.getItem(i).getIcon();
                    if (drawable instanceof Animatable) {
                        ((Animatable) drawable).start();
                    }
                }
            }
        }
    });
}
MainActivity.java 文件源码 项目:GitHub 阅读 37 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
ClassicsHeader.java 文件源码 项目:GitHub 阅读 35 收藏 0 点赞 0 评论 0
@Override
public int onFinish(RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        setLastUpdateTime(new Date());
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
DrawableToBitmapConverter.java 文件源码 项目:GitHub 阅读 40 收藏 0 点赞 0 评论 0
@Nullable
static Resource<Bitmap> convert(BitmapPool bitmapPool, Drawable drawable, int width, int height) {
  // Handle DrawableContainer or StateListDrawables that may contain one or more BitmapDrawables.
  drawable = drawable.getCurrent();
  Bitmap result = null;
  boolean isRecycleable = false;
  if (drawable instanceof BitmapDrawable) {
    result = ((BitmapDrawable) drawable).getBitmap();
  } else if (!(drawable instanceof Animatable)) {
    result = drawToBitmap(bitmapPool, drawable, width, height);
    // We created and drew to the Bitmap, so it's safe for us to recycle or re-use.
    isRecycleable = true;
  }

  BitmapPool toUse = isRecycleable ? bitmapPool : NO_RECYCLE_BITMAP_POOL;
  return BitmapResource.obtain(result, toUse);
}
GenericDraweeHierarchy.java 文件源码 项目:GitHub 阅读 41 收藏 0 点赞 0 评论 0
private void setProgress(float progress) {
  Drawable progressBarDrawable = mFadeDrawable.getDrawable(PROGRESS_BAR_IMAGE_INDEX);
  if (progressBarDrawable == null) {
    return;
  }

  // display progressbar when not fully loaded, hide otherwise
  if (progress >= 0.999f) {
    if (progressBarDrawable instanceof Animatable) {
      ((Animatable) progressBarDrawable).stop();
    }
    fadeOutLayer(PROGRESS_BAR_IMAGE_INDEX);
  } else {
    if (progressBarDrawable instanceof Animatable) {
      ((Animatable) progressBarDrawable).start();
    }
    fadeInLayer(PROGRESS_BAR_IMAGE_INDEX);
  }
  // set drawable level, scaled to [0, 10000] per drawable specification
  progressBarDrawable.setLevel(Math.round(progress * 10000));
}
AVLoadingIndicatorView.java 文件源码 项目:RLibrary 阅读 35 收藏 0 点赞 0 评论 0
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
ForwardingControllerListener.java 文件源码 项目:GitHub 阅读 35 收藏 0 点赞 0 评论 0
@Override
public synchronized void onFinalImageSet(
    String id,
    @Nullable INFO imageInfo,
    @Nullable Animatable animatable) {
  final int numberOfListeners = mListeners.size();
  for (int i = 0; i < numberOfListeners; ++i) {
    try {
      ControllerListener<? super INFO> listener = mListeners.get(i);
      if (listener != null) {
        listener.onFinalImageSet(id, imageInfo, animatable);
      }
    } catch (Exception exception) {
      // Don't punish the other listeners if we're given a bad one.
      onException("InternalListener exception in onFinalImageSet", exception);
    }
  }
}
InstrumentedDraweeView.java 文件源码 项目:GitHub 阅读 36 收藏 0 点赞 0 评论 0
private void init() {
  mInstrumentation = new Instrumentation(this);
  mListener = new BaseControllerListener<Object>() {
    @Override
    public void onSubmit(String id, Object callerContext) {
      mInstrumentation.onStart();
    }
    @Override
    public void onFinalImageSet(
      String id,
      @Nullable Object imageInfo,
      @Nullable Animatable animatable) {
      mInstrumentation.onSuccess();
    }
    @Override
    public void onFailure(String id, Throwable throwable) {
      mInstrumentation.onFailure();
    }
    @Override
    public void onRelease(String id) {
      mInstrumentation.onCancellation();
    }
  };
}
ClassicsHeader.java 文件源码 项目:Rxjava2.0Demo 阅读 42 收藏 0 点赞 0 评论 0
@Override
public int onFinish(RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        if (mLastTime != null) {
            setLastUpdateTime(new Date());
        }
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
SplashActivity.java 文件源码 项目:RunMap 阅读 35 收藏 0 点赞 0 评论 0
@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    ButterKnife.bind(this);
    Uri uri = Uri.parse("asset:///splash.webp");
    mSplashPresenter = new SplashPresenterImpl(this);
    DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setUri(uri)
            .setAutoPlayAnimations(true)
            .setControllerListener(new BaseControllerListener<ImageInfo>(){
                @Override
                public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable animatable) {
                    super.onFinalImageSet(id, imageInfo, animatable);
                    mSplashPresenter.startCountDown(1);
                }
            })
            .build();
    splashDraweee.setController(controller);
}
AVLoadingIndicatorView.java 文件源码 项目:SRecyclerView 阅读 39 收藏 0 点赞 0 评论 0
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
RecyclerViewLoadingView.java 文件源码 项目:UltimateRecyclerView 阅读 46 收藏 0 点赞 0 评论 0
void drawTrack(Canvas canvas) {
    final Drawable d = DEFAULT_ANIMATION;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
FinalActivity.java 文件源码 项目:start-guide 阅读 41 收藏 0 点赞 0 评论 0
@Override
protected void onStart() {
    super.onStart();

    // Animate checkmark
    mFinalCheckmarkImageView.postDelayed(new Runnable() {
        @Override
        public void run() {
            mFinalCheckmarkImageView.setVisibility(View.VISIBLE);
            Drawable drawable = mFinalCheckmarkImageView.getDrawable();
            ((Animatable) drawable).start();

            playGoodJob();
        }
    }, DEFAULT_PLAYER_DELAY);
}
MainActivity.java 文件源码 项目:android-mvp-interactor-architecture 阅读 34 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
MainActivity.java 文件源码 项目:android-animated-menu-items 阅读 35 收藏 0 点赞 0 评论 0
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("Anim Items");

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (menu != null) {
                for (int i = 0; i < menu.size(); i++) {
                    Drawable drawable = menu.getItem(i).getIcon();
                    if (drawable instanceof Animatable) {
                        ((Animatable) drawable).start();
                    }
                }
            }
        }
    });
}
LoadingIndicatorView.java 文件源码 项目:VirtualHook 阅读 35 收藏 0 点赞 0 评论 0
void drawTrack(Canvas canvas) {
    final Drawable d = mIndicator;
    if (d != null) {
        // Translate canvas so a indeterminate circular progress bar with padding
        // rotates properly in its animation
        final int saveCount = canvas.save();

        canvas.translate(getPaddingLeft(), getPaddingTop());

        d.draw(canvas);
        canvas.restoreToCount(saveCount);

        if (mShouldStartAnimationDrawable && d instanceof Animatable) {
            ((Animatable) d).start();
            mShouldStartAnimationDrawable = false;
        }
    }
}
MainActivity.java 文件源码 项目:android-mvvm-architecture 阅读 34 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
AsyncDrawable.java 文件源码 项目:Markwon 阅读 40 收藏 0 点赞 0 评论 0
public void setCallback2(@Nullable Callback callback) {

        this.callback = callback;
        super.setCallback(callback);

        // if not null -> means we are attached
        if (callback != null) {
            loader.load(destination, this);
        } else {
            if (result != null) {

                result.setCallback(null);

                // let's additionally stop if it Animatable
                if (result instanceof Animatable) {
                    ((Animatable) result).stop();
                }
            }
            loader.cancel(destination);
        }
    }
MainActivity.java 文件源码 项目:android-mvp-architecture 阅读 33 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Drawable drawable = item.getIcon();
    if (drawable instanceof Animatable) {
        ((Animatable) drawable).start();
    }
    switch (item.getItemId()) {
        case R.id.action_cut:
            return true;
        case R.id.action_copy:
            return true;
        case R.id.action_share:
            return true;
        case R.id.action_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
MainActivity.java 文件源码 项目:android-list-to-grid 阅读 43 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_list_to_grid) {
        if (!((Animatable) item.getIcon()).isRunning()) {
            if (gridLayoutManager.getSpanCount() == 1) {
                item.setIcon(AnimatedVectorDrawableCompat.create(MainActivity.this, R.drawable.avd_list_to_grid));
                gridLayoutManager.setSpanCount(3);
            } else {
                item.setIcon(AnimatedVectorDrawableCompat.create(MainActivity.this, R.drawable.avd_grid_to_list));
                gridLayoutManager.setSpanCount(1);
            }
            ((Animatable) item.getIcon()).start();
            simpleAdapter.notifyItemRangeChanged(0, simpleAdapter.getItemCount());
        }
        return true;
    }

    return super.onOptionsItemSelected(item);
}
UdeskUtil.java 文件源码 项目:react-native-udesk 阅读 40 收藏 0 点赞 0 评论 0
public static void loadImage(final PhotoDraweeView mPhotoDraweeView,
                             Uri uri) {
    PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder();
    controller.setUri(uri);
    controller.setAutoPlayAnimations(true);
    controller.setOldController(mPhotoDraweeView.getController());
    controller.setControllerListener(new BaseControllerListener<ImageInfo>() {
        @Override
        public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {
            super.onFinalImageSet(id, imageInfo, animatable);
            if (imageInfo == null || mPhotoDraweeView == null) {
                return;
            }
            mPhotoDraweeView.update(imageInfo.getWidth(), imageInfo.getHeight());
        }
    });
    mPhotoDraweeView.setController(controller.build());
}
Bindings.java 文件源码 项目:Animated-Vector-Drawables 阅读 36 收藏 0 点赞 0 评论 0
@BindingAdapter("animateOnClick")
public static void setAnimateOnClick(final ImageView view, final Drawable backDrawable) {
  final Animatable front = (Animatable) view.getDrawable();

  view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      if (null == backDrawable) {
        front.start();
      } else {
        if (null == view.getTag()) {
          view.setImageDrawable((Drawable) front);
          front.start();
          view.setTag(0);
        } else {
          view.setImageDrawable(backDrawable);
          ((Animatable) backDrawable).start();
          view.setTag(null);
        }
      }
    }
  });
}
ClassicsHeader.java 文件源码 项目:SmartRefreshLayout 阅读 39 收藏 0 点赞 0 评论 0
@Override
public int onFinish(@NonNull RefreshLayout layout, boolean success) {
    if (mProgressDrawable != null) {
        mProgressDrawable.stop();
    } else {
        Drawable drawable = mProgressView.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).stop();
        } else {
            mProgressView.animate().rotation(0).setDuration(300);
        }
    }
    mProgressView.setVisibility(GONE);
    if (success) {
        mTitleText.setText(REFRESH_HEADER_FINISH);
        if (mLastTime != null) {
            setLastUpdateTime(new Date());
        }
    } else {
        mTitleText.setText(REFRESH_HEADER_FAILED);
    }
    return mFinishDuration;//延迟500毫秒之后再弹回
}
MainActivity.java 文件源码 项目:Camera-Roll-Android-App 阅读 39 收藏 0 点赞 0 评论 0
public void fabClicked(View v) {
    if (v instanceof FloatingActionButton) {
        FloatingActionButton fab = (FloatingActionButton) v;
        Drawable drawable = fab.getDrawable();
        if (drawable instanceof Animatable) {
            ((Animatable) drawable).start();
        }
    }
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent();
            i.setAction(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
            if (i.resolveActivity(getPackageManager()) != null) {
                startActivity(i);
            } else {
                Toast.makeText(MainActivity.this, getString(R.string.error), Toast.LENGTH_SHORT).show();
            }
        }
    }, (int) (500 * Util.getAnimatorSpeed(this)));
}
EditImageActivity.java 文件源码 项目:Camera-Roll-Android-App 阅读 41 收藏 0 点赞 0 评论 0
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            break;
        case R.id.rotate:
            Drawable d = item.getIcon();
            if (d instanceof Animatable && !((Animatable) d).isRunning()) {
                ((Animatable) d).start();
            }
            rotate90Degrees();
            break;
        case R.id.done:
            done(item.getActionView());
            break;
        case R.id.restore:
            CropImageView imageView = findViewById(R.id.cropImageView);
            imageView.restore();
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}
TapBarMenu.java 文件源码 项目:QuickDrawEverywhere 阅读 44 收藏 0 点赞 0 评论 0
/**
 * Open the menu.
 */
public void open() {
    state = State.OPENED;
    showIcons(true);

    animator[LEFT].setFloatValues(button[LEFT], 0);
    animator[RIGHT].setFloatValues(button[RIGHT], width);
    animator[RADIUS].setFloatValues(button[RADIUS], 0);
    animator[TOP].setFloatValues(button[TOP], 0);
    animator[BOTTOM].setFloatValues(button[BOTTOM], height);

    animatorSet.cancel();
    animatorSet.start();
    if (iconOpenedDrawable instanceof Animatable) {
        ((Animatable) iconOpenedDrawable).start();
    }
    ViewGroup parentView = (ViewGroup) TapBarMenu.this.getParent();
    this.animate()
            .y(menuAnchor == MENU_ANCHOR_BOTTOM ? parentView.getBottom() - height : 0)
            .setDuration(animationDuration)
            .setInterpolator(DECELERATE_INTERPOLATOR)
            .start();
}
TapBarMenu.java 文件源码 项目:QuickDrawEverywhere 阅读 40 收藏 0 点赞 0 评论 0
/**
 * Close the menu.
 */
public void close() {
    updateDimensions(width, height);
    state = State.CLOSED;
    showIcons(false);

    animator[LEFT].setFloatValues(0, button[LEFT]);
    animator[RIGHT].setFloatValues(width, button[RIGHT]);
    animator[RADIUS].setFloatValues(0, button[RADIUS]);
    animator[TOP].setFloatValues(0, button[TOP]);
    animator[BOTTOM].setFloatValues(height, button[BOTTOM]);

    animatorSet.cancel();
    animatorSet.start();
    if (iconClosedDrawable instanceof Animatable) {
        ((Animatable) iconClosedDrawable).start();
    }
    this.animate()
            .y(yPosition)
            .setDuration(animationDuration)
            .setInterpolator(DECELERATE_INTERPOLATOR)
            .start();
}
TapBarMenu.java 文件源码 项目:QuickDrawEverywhere 阅读 44 收藏 0 点赞 0 评论 0
private void updateDimensions(float w, float h) {
    int ratio;
    width = w;
    height = h;

    button[RADIUS] = buttonSize;
    setButtonPosition(width);
    if (iconClosedDrawable instanceof Animatable) {
        ratio = 3;
    } else {
        ratio = 5;
    }
    float iconLeft = button[LEFT] + buttonSize / ratio;
    float iconTop = (height - buttonSize) / 2 + buttonSize / ratio;

    float iconRight = button[RIGHT] - buttonSize / ratio;
    float iconBottom = (height + buttonSize) / 2 - buttonSize / ratio;
    iconOpenedDrawable
            .setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
    iconClosedDrawable
            .setBounds((int) iconLeft, (int) iconTop, (int) iconRight, (int) iconBottom);
}
TapBarMenu.java 文件源码 项目:MenuSet 阅读 51 收藏 0 点赞 0 评论 0
/**
 * Open the menu.
 */
public void open() {
  state = State.OPENED;
  showIcons(true);

  animator[LEFT].setFloatValues(button[LEFT], 0);
  animator[RIGHT].setFloatValues(button[RIGHT], width);
  animator[RADIUS].setFloatValues(button[RADIUS], 0);
  animator[TOP].setFloatValues(button[TOP], 0);
  animator[BOTTOM].setFloatValues(button[BOTTOM], height);

  animatorSet.cancel();
  animatorSet.start();
  if (iconOpenedDrawable instanceof Animatable) {
    ((Animatable) iconOpenedDrawable).start();
  }
  ViewGroup parentView = (ViewGroup) TapBarMenu.this.getParent();
  this.animate()
      .y(menuAnchor == MENU_ANCHOR_BOTTOM ? parentView.getBottom() - height : 0)
          .setDuration(animationDuration)
          .setInterpolator(DECELERATE_INTERPOLATOR)
          .start();
}
TapBarMenu.java 文件源码 项目:MenuSet 阅读 36 收藏 0 点赞 0 评论 0
/**
 * Close the menu.
 */
public void close() {
  updateDimensions(width, height);
  state = State.CLOSED;
  showIcons(false);

  animator[LEFT].setFloatValues(0, button[LEFT]);
  animator[RIGHT].setFloatValues(width, button[RIGHT]);
  animator[RADIUS].setFloatValues(0, button[RADIUS]);
  animator[TOP].setFloatValues(0, button[TOP]);
  animator[BOTTOM].setFloatValues(height, button[BOTTOM]);

  animatorSet.cancel();
  animatorSet.start();
  if (iconClosedDrawable instanceof Animatable) {
    ((Animatable) iconClosedDrawable).start();
  }
  this.animate()
          .y(yPosition)
          .setDuration(animationDuration)
          .setInterpolator(DECELERATE_INTERPOLATOR)
          .start();
}


问题


面经


文章

微信
公众号

扫码关注公众号