Android Open Source - holoaccent Fast Scroll Drawable






From Project

Back to project page holoaccent.

License

The source code is released under:

Apache License

If you think the Android project holoaccent 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

/*******************************************************************************
 * Copyright 2013 NEGU Soft//from   w  ww.j  a  va 2s . c o  m
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.negusoft.holoaccent.drawable;

import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.util.TypedValue;

import com.negusoft.holoaccent.AccentPalette;

public class FastScrollDrawable extends Drawable {
  
  private static final float WIDTH_DP = 30f;
  private static final float HEIGHT_DP = 54f;
  private static final float FILL_WIDTH_DP = 6f;
  private static final float FILL_HEIGHT_DP = 30f;
  private static final float FILL_RADIUS_DP = 1f;
  private static final float GLOW_WIDTH_DP = 14f;
  private static final float GLOW_HEIGHT_DP = 37f;
  private static final float GLOW_RADIUS_DP = 5f;

  private static final int FILL_ALPHA = 156;
  private static final int GLOW_ALPHA = 63;

  private final DisplayMetrics mMetrics;
  private final AccentPalette mPalette;
  private final boolean mPressed;
  
  private final Paint mFillPaint;
  private final float mFillWidth;
  private final float mFillHeight;
  private final float mFillRadius;

  private final Paint mGlowPaint;
  private final float mGlowWidth;
  private final float mGlowHeight;
  private final float mGlowRadius;
  
  private int mAlpha = 255;

  public FastScrollDrawable(DisplayMetrics metrics, AccentPalette palette, boolean pressed) {
    mMetrics = metrics;
    mPalette = palette;
    mPressed = pressed;
    
    mFillPaint = initFillPaint(palette, pressed);
    mFillWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, FILL_WIDTH_DP, metrics);
    mFillHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, FILL_HEIGHT_DP, metrics);
    mFillRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, FILL_RADIUS_DP, metrics);
    
    mGlowPaint = initGlowPaint(palette, pressed);
    mGlowWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, GLOW_WIDTH_DP, metrics);
    mGlowHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, GLOW_HEIGHT_DP, metrics);
    mGlowRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, GLOW_RADIUS_DP, metrics);
  }
  
  private Paint initFillPaint(AccentPalette palette, boolean pressed) {
    Paint result = new Paint();
    result.setStyle(Paint.Style.FILL);
    int color = getFillColor(palette, pressed, 255);
    result.setColor(color);
    result.setAntiAlias(true);
    return result;
  }
  
  private Paint initGlowPaint(AccentPalette palette, boolean pressed) {
    if (!pressed)
      return null;
    
    Paint result = new Paint();
    result.setStyle(Paint.Style.FILL);
    result.setColor(getGlowColor(palette, pressed, 255));
    result.setAntiAlias(true);
    return result;
  }
  
  private int getFillColor(AccentPalette palette, boolean pressed, int alpha) {
    if (!pressed)
      return palette.getDarkAccentColor(alpha);
    int resultAlpha = FILL_ALPHA * alpha / 255;
    return palette.getAccentColor(resultAlpha);
  }
  
  private int getGlowColor(AccentPalette palette, boolean pressed, int alpha) {
    int resultAlpha = GLOW_ALPHA * alpha / 255;
    return palette.getAccentColor(resultAlpha);
  }
  
  @Override
  public int getIntrinsicWidth() {
    return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, WIDTH_DP, mMetrics);
  }
  
  @Override
  public int getIntrinsicHeight() {
    return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, HEIGHT_DP, mMetrics);
  }
  
  @Override
  public void draw(Canvas canvas) {
    float centerX = getBounds().exactCenterX();
    float centerY = getBounds().exactCenterY();
    
    if (mGlowPaint != null) {
      float halfWidth = mGlowWidth / 2f;
      float halfHeight = mGlowHeight / 2f;
      RectF rect = new RectF(centerX - halfWidth, 
          centerY - halfHeight, 
          centerX + halfWidth, 
          centerY + halfHeight);
      mGlowPaint.setColor(getGlowColor(mPalette, mPressed, mAlpha));
      canvas.drawRoundRect(rect, mGlowRadius, mGlowRadius, mGlowPaint);
    }

    float halfWidth = mFillWidth / 2f;
    float halfHeight = mFillHeight / 2f;
    RectF rect = new RectF(centerX - halfWidth, 
        centerY - halfHeight, 
        centerX + halfWidth, 
        centerY + halfHeight);
    mFillPaint.setColor(getFillColor(mPalette, mPressed, mAlpha));
    canvas.drawRoundRect(rect, mFillRadius, mFillRadius, mFillPaint);
  }

  @Override
  public int getOpacity() {
    return PixelFormat.TRANSLUCENT;
  }

  @Override
  public void setAlpha(int alpha) {
    mAlpha = alpha;
    invalidateSelf();
  }

  @Override
  public void setColorFilter(ColorFilter cf) {
    // empty
  }

}




Java Source Code List

com.negusoft.holoaccent.AccentHelper.java
com.negusoft.holoaccent.AccentPalette.java
com.negusoft.holoaccent.AccentResources.java
com.negusoft.holoaccent.activity.AccentActivity.java
com.negusoft.holoaccent.dialog.AccentAlertDialog.java
com.negusoft.holoaccent.dialog.AccentDatePickerDialog.java
com.negusoft.holoaccent.dialog.AccentDialogFragment.java
com.negusoft.holoaccent.dialog.AccentTimePickerDialog.java
com.negusoft.holoaccent.dialog.DividerPainter.java
com.negusoft.holoaccent.dialog.NumberPickerPainter.java
com.negusoft.holoaccent.drawable.ActionBarBackgroundDrawable.java
com.negusoft.holoaccent.drawable.CircleDrawable.java
com.negusoft.holoaccent.drawable.ContactBadgeDrawable.java
com.negusoft.holoaccent.drawable.FastScrollDrawable.java
com.negusoft.holoaccent.drawable.IndeterminedProgressDrawable.java
com.negusoft.holoaccent.drawable.IndeterminedProgressLegacyDrawable.java
com.negusoft.holoaccent.drawable.RectDrawable.java
com.negusoft.holoaccent.drawable.RoundRectDrawable.java
com.negusoft.holoaccent.drawable.ScrubberControlSelectorDrawable.java
com.negusoft.holoaccent.drawable.ScrubberProgressDrawable.java
com.negusoft.holoaccent.drawable.SearchViewDrawable.java
com.negusoft.holoaccent.drawable.SpinnerDrawable.java
com.negusoft.holoaccent.drawable.ToggleForegroundDrawable.java
com.negusoft.holoaccent.drawable.UnderlineDrawable.java
com.negusoft.holoaccent.example.activity.AccentFragmentActivity.java
com.negusoft.holoaccent.example.activity.DialogActivity.java
com.negusoft.holoaccent.example.activity.MainActivity.java
com.negusoft.holoaccent.example.activity.PreferencesActivity.java
com.negusoft.holoaccent.example.activity.SpinnerActivity.java
com.negusoft.holoaccent.example.activity.TabbedActivity.java
com.negusoft.holoaccent.example.activity.TabbedStripActivity.java
com.negusoft.holoaccent.example.activity.themed.DialogActivityLight.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLight.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLight.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLight.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLight.java
com.negusoft.holoaccent.example.fragment.AccentSupportDialogFragment.java
com.negusoft.holoaccent.example.fragment.ButtonFragment.java
com.negusoft.holoaccent.example.fragment.ChoicesFragment.java
com.negusoft.holoaccent.example.fragment.ListFragment.java
com.negusoft.holoaccent.example.fragment.PickersFragment.java
com.negusoft.holoaccent.example.fragment.ProgressFragment.java
com.negusoft.holoaccent.example.fragment.SimpleDialogFragment.java
com.negusoft.holoaccent.example.fragment.TextviewFragment.java
com.negusoft.holoaccent.example.model.ColorOverrideConfig.java
com.negusoft.holoaccent.example.preference.CustomDialogPreference.java
com.negusoft.holoaccent.example.view.CheckableTextView.java
com.negusoft.holoaccent.interceptor.AccentColorInterceptor.java
com.negusoft.holoaccent.interceptor.ActionBarBackgroundInterceptor.java
com.negusoft.holoaccent.interceptor.CircleInterceptor.java
com.negusoft.holoaccent.interceptor.ContactBadgeInterceptor.java
com.negusoft.holoaccent.interceptor.FastScrollInterceptor.java
com.negusoft.holoaccent.interceptor.IndeterminateInterceptor.java
com.negusoft.holoaccent.interceptor.NativeInterceptor.java
com.negusoft.holoaccent.interceptor.PagerTabStripInterceptor.java
com.negusoft.holoaccent.interceptor.RectInterceptor.java
com.negusoft.holoaccent.interceptor.RoundRectInterceptor.java
com.negusoft.holoaccent.interceptor.ScrubberInterceptor.java
com.negusoft.holoaccent.interceptor.SearchViewTextFieldInterceptor.java
com.negusoft.holoaccent.interceptor.SolidColorInterceptor.java
com.negusoft.holoaccent.interceptor.SpinnerInterceptor.java
com.negusoft.holoaccent.interceptor.ToggleInterceptor.java
com.negusoft.holoaccent.interceptor.UnderlineInterceptor.java
com.negusoft.holoaccent.preference.DialogPreference.java
com.negusoft.holoaccent.preference.EditTextPreference.java
com.negusoft.holoaccent.preference.ListPreference.java
com.negusoft.holoaccent.preference.MultiSelectListPreference.java
com.negusoft.holoaccent.preference.SwitchPreference.java
com.negusoft.holoaccent.util.BitmapUtils.java
com.negusoft.holoaccent.util.NativeResources.java
com.negusoft.holoaccent.widget.AccentDatePicker.java
com.negusoft.holoaccent.widget.AccentNumberPicker.java
com.negusoft.holoaccent.widget.AccentQuickContactBadge.java
com.negusoft.holoaccent.widget.AccentRatingBar.java
com.negusoft.holoaccent.widget.AccentSearchView.java
com.negusoft.holoaccent.widget.AccentSwitch.java
com.negusoft.holoaccent.widget.AccentTimePicker.java