Java Code Examples for android.content.res.TypedArray#getBoolean()

The following examples show how to use android.content.res.TypedArray#getBoolean() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: KnifeText.java    From Knife with Apache License 2.0 6 votes vote down vote up
private void init(AttributeSet attrs) {
    TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.KnifeText);
    bulletColor = array.getColor(R.styleable.KnifeText_bulletColor, 0);
    bulletRadius = array.getDimensionPixelSize(R.styleable.KnifeText_bulletRadius, 0);
    bulletGapWidth = array.getDimensionPixelSize(R.styleable.KnifeText_bulletGapWidth, 0);
    historyEnable = array.getBoolean(R.styleable.KnifeText_historyEnable, true);
    historySize = array.getInt(R.styleable.KnifeText_historySize, 100);
    linkColor = array.getColor(R.styleable.KnifeText_linkColor, 0);
    linkUnderline = array.getBoolean(R.styleable.KnifeText_linkUnderline, true);
    quoteColor = array.getColor(R.styleable.KnifeText_quoteColor, 0);
    quoteStripeWidth = array.getDimensionPixelSize(R.styleable.KnifeText_quoteStripeWidth, 0);
    quoteGapWidth = array.getDimensionPixelSize(R.styleable.KnifeText_quoteCapWidth, 0);
    array.recycle();

    if (historyEnable && historySize <= 0) {
        throw new IllegalArgumentException("historySize must > 0");
    }
}
 
Example 2
Source File: AdapterViewFlipper.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
public AdapterViewFlipper(
        Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    final TypedArray a = context.obtainStyledAttributes(attrs,
            com.android.internal.R.styleable.AdapterViewFlipper, defStyleAttr, defStyleRes);
    mFlipInterval = a.getInt(
            com.android.internal.R.styleable.AdapterViewFlipper_flipInterval, DEFAULT_INTERVAL);
    mAutoStart = a.getBoolean(
            com.android.internal.R.styleable.AdapterViewFlipper_autoStart, false);

    // A view flipper should cycle through the views
    mLoopViews = true;

    a.recycle();
}
 
Example 3
Source File: PickerFragment.java    From aws-mobile-self-paced-labs-samples with Apache License 2.0 6 votes vote down vote up
@Override
public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
    super.onInflate(activity, attrs, savedInstanceState);
    TypedArray a = activity.obtainStyledAttributes(attrs, R.styleable.com_facebook_picker_fragment);

    setShowPictures(a.getBoolean(R.styleable.com_facebook_picker_fragment_show_pictures, showPictures));
    String extraFieldsString = a.getString(R.styleable.com_facebook_picker_fragment_extra_fields);
    if (extraFieldsString != null) {
        String[] strings = extraFieldsString.split(",");
        setExtraFields(Arrays.asList(strings));
    }

    showTitleBar = a.getBoolean(R.styleable.com_facebook_picker_fragment_show_title_bar, showTitleBar);
    titleText = a.getString(R.styleable.com_facebook_picker_fragment_title_text);
    doneButtonText = a.getString(R.styleable.com_facebook_picker_fragment_done_button_text);
    titleBarBackground = a.getDrawable(R.styleable.com_facebook_picker_fragment_title_bar_background);
    doneButtonBackground = a.getDrawable(R.styleable.com_facebook_picker_fragment_done_button_background);

    a.recycle();
}
 
Example 4
Source File: BubbleLayout.java    From bubble-layout with MIT License 6 votes vote down vote up
public BubbleLayout(Context c, AttributeSet attrs, int defStyleAttr) {
    super(c, attrs, defStyleAttr);

    // Create default sizes from density
    final float density = getResources().getDisplayMetrics().density;
    final int DEFAULT_BUBBLE_SIZE = (int)(40f * density);
    final int DEFAULT_BUBBLE_MARGIN = (int)(4f * density);
    final int DEFAULT_BORDER_WIDTH = (int)(1f * density);
    final int DEFAULT_BUBBLE_OFFSET = 2; // 1/2 of each bubble
    final int DEFAULT_BUBBLE_PEEK = 4;

    // Set XML attributes
    TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.BubbleLayout);
    this.bubbleSize = a.getDimensionPixelSize(R.styleable.BubbleLayout_bubbleSize, DEFAULT_BUBBLE_SIZE);
    this.bubbleOffset = bubbleSize / (a.getInt(R.styleable.BubbleLayout_bubbleOffset, DEFAULT_BUBBLE_OFFSET));
    this.bubblePeek = a.getInt(R.styleable.BubbleLayout_bubblePeek, DEFAULT_BUBBLE_PEEK);
    this.bubbleBorderWidth = a.getDimensionPixelSize(R.styleable.BubbleLayout_borderWidth, DEFAULT_BORDER_WIDTH);
    this.bubbleMargin = a.getDimensionPixelSize(R.styleable.BubbleLayout_bubbleMargin, DEFAULT_BUBBLE_MARGIN);
    this.bubbleBorderColor = a.getColor(R.styleable.BubbleLayout_borderColor, ContextCompat.getColor(c, R.color.default_circle_border_color));
    this.textColor = a.getColor(R.styleable.BubbleLayout_android_textColor, ContextCompat.getColor(c, R.color.default_circle_text_color));
    this.useOffset = a.getBoolean(R.styleable.BubbleLayout_useBubbleOffset, true);
    a.recycle();
}
 
Example 5
Source File: CircularProgress.java    From fingerpoetry-android with Apache License 2.0 6 votes vote down vote up
public CircularProgress(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.CircularProgress);
    mColor = attributes.getColor(R.styleable.CircularProgress_circular_progress_color,
            getResources().getColor(R.color.circular_progress_color));
    mSize = attributes.getInt(R.styleable.CircularProgress_circular_progress_size, NORMAL_SIZE);
    mIndeterminate = attributes.getBoolean(R.styleable.CircularProgress_circular_progress_indeterminate,
            getResources().getBoolean(R.bool.circular_progress_indeterminate));
    mBorderWidth = attributes.getDimensionPixelSize(R.styleable.CircularProgress_circular_progress_border_width,
            getResources().getDimensionPixelSize(R.dimen.circular_progress_border_width));
    mDuration = attributes.getInteger(R.styleable.CircularProgress_circular_progress_duration, ANIMATION_RESOLUTION);
    mMax = attributes.getInteger(R.styleable.CircularProgress_circular_progress_max,
            getResources().getInteger(R.integer.circular_progress_max));
    attributes.recycle();

    if (mIndeterminate) {
        mIndeterminateProgressDrawable = new IndeterminateProgressDrawable(mColor, mBorderWidth);
        mIndeterminateProgressDrawable.setCallback(this);
    } else {
        mDeterminateProgressDrawable = new DeterminateProgressDrawable(mColor, mBorderWidth, 0);
        mDeterminateProgressDrawable.setCallback(this);
    }
}
 
Example 6
Source File: PullToRefreshListView.java    From BigApp_Discuz_Android with Apache License 2.0 5 votes vote down vote up
@Override
protected void handleStyledAttributes(TypedArray a) {
	super.handleStyledAttributes(a);

	mListViewExtrasEnabled = a.getBoolean(R.styleable.PullToRefresh_ptrListViewExtrasEnabled, true);

	if (mListViewExtrasEnabled) {
		final FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
				FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);

		// Create Loading Views ready for use later
		FrameLayout frame = new FrameLayout(getContext());
		mHeaderLoadingView = createLoadingLayout(getContext(), Mode.PULL_FROM_START, a);
		mHeaderLoadingView.setVisibility(View.GONE);
		frame.addView(mHeaderLoadingView, lp);
		mRefreshableView.addHeaderView(frame, null, false);

		mLvFooterLoadingFrame = new FrameLayout(getContext());
		mFooterLoadingView = createLoadingLayout(getContext(), Mode.PULL_FROM_END, a);
		mFooterLoadingView.setVisibility(View.GONE);
		mLvFooterLoadingFrame.addView(mFooterLoadingView, lp);

		/**
		 * If the value for Scrolling While Refreshing hasn't been
		 * explicitly set via XML, enable Scrolling While Refreshing.
		 */
		if (!a.hasValue(R.styleable.PullToRefresh_ptrScrollingWhileRefreshingEnabled)) {
			setScrollingWhileRefreshingEnabled(true);
		}
	}
}
 
Example 7
Source File: ForegroundLinearLayout.java    From ForegroundViews with Apache License 2.0 5 votes vote down vote up
public ForegroundLinearLayout(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);

  final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundLayout, defStyle, 0);

  final Drawable d = a.getDrawable(R.styleable.ForegroundLayout_foreground);
  foregroundPadding = a.getBoolean(R.styleable.ForegroundLayout_foregroundInsidePadding, false);

  backgroundAsForeground = a.getBoolean(R.styleable.ForegroundLayout_backgroundAsForeground, false);

  // Apply foreground padding for ninepatches automatically
  if (!foregroundPadding && getBackground() instanceof NinePatchDrawable) {
    final NinePatchDrawable npd = (NinePatchDrawable) getBackground();
    if (npd != null && npd.getPadding(rectPadding)) {
      foregroundPadding = true;
    }
  }

  final Drawable b = getBackground();
  if (backgroundAsForeground && b != null) {
    setForeground(b);
  } else if (d != null) {
    setForeground(d);
  }

  a.recycle();
}
 
Example 8
Source File: ViewUtils.java    From ncalc with GNU General Public License v3.0 5 votes vote down vote up
public static boolean getBoolean(Context context, int attr, boolean def) {
    TypedValue typedValue = new TypedValue();
    TypedArray a = context.obtainStyledAttributes(typedValue.data, new int[]{attr});
    boolean value = a.getBoolean(0, def);
    a.recycle();
    return value;
}
 
Example 9
Source File: VMSquareLayout.java    From VMLibrary with Apache License 2.0 5 votes vote down vote up
/**
 * 获取资源属性
 *
 * @param context
 * @param attrs
 */
private void handleAttrs(Context context, AttributeSet attrs) {
    if (attrs == null) {
        return;
    }
    TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.VMSquareLayout);
    isUnifyWidth = array.getBoolean(R.styleable.VMSquareLayout_vm_unify_width, true);
}
 
Example 10
Source File: FloatingActionsMenu.java    From UltimateRecyclerView with Apache License 2.0 5 votes vote down vote up
private void init(Context context, AttributeSet attributeSet) {
    mAddButtonPlusColor = getColor(android.R.color.white);
    mAddButtonColorNormal = getColor(android.R.color.holo_blue_dark);
    mAddButtonColorPressed = getColor(android.R.color.holo_blue_light);

    mButtonSpacing = (int) (getResources().getDimension(R.dimen.fab_actions_spacing) - getResources().getDimension(R.dimen.fab_shadow_radius) - getResources().getDimension(R.dimen.fab_shadow_offset));

    if (attributeSet != null) {
        TypedArray attr = context.obtainStyledAttributes(attributeSet, R.styleable.FloatingActionsMenu, 0, 0);
        if (attr != null) {
            try {
                mAddButtonPlusColor = attr.getColor(R.styleable.FloatingActionsMenu_addButtonPlusIconColor, getColor(android.R.color.white));
                mAddButtonColorNormal = attr.getColor(R.styleable.FloatingActionsMenu_addButtonColorNormal, getColor(android.R.color.holo_blue_dark));
                mAddButtonColorPressed = attr.getColor(R.styleable.FloatingActionsMenu_addButtonColorPressed, getColor(android.R.color.holo_blue_light));
                isHorizontal = attr.getBoolean(R.styleable.FloatingActionsMenu_addButtonIsHorizontal, false);
            } finally {
                attr.recycle();
            }
        }
    }
    WindowManager mWindowManager = (WindowManager)
            context.getSystemService(Context.WINDOW_SERVICE);
    Display display = mWindowManager.getDefaultDisplay();
    Point size = new Point();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
        display.getSize(size);
        mYHidden = size.y;
    } else mYHidden = display.getHeight();

    createAddButton(context);
}
 
Example 11
Source File: Luhn.java    From Luhn with MIT License 5 votes vote down vote up
private void initStyle(int style) {
    TypedArray ta = obtainStyledAttributes(style, R.styleable.luhnStyle);
    String fontName = ta.getString(R.styleable.luhnStyle_luhn_typeface);
    String title = ta.getString(R.styleable.luhnStyle_luhn_title);
    includeCalligraphy(fontName);
    initViews();
    retrievePin = ta.getBoolean(R.styleable.luhnStyle_luhn_show_pin, false);
    ((AppCompatTextView) findViewById(R.id.toolbar_title)).setText(TextUtils.isEmpty(title) ? "Add Card" : title);
    findViewById(R.id.btn_proceed).setBackground(ta.getDrawable(R.styleable.luhnStyle_luhn_btn_verify_selector));
    findViewById(R.id.toolbar).setBackgroundColor(ta.getColor(R.styleable.luhnStyle_luhn_show_toolbar_color, ContextCompat.getColor(this, R.color.ln_colorPrimary)));
}
 
Example 12
Source File: HeadsUpNotificationView.java    From HeadsUp with GNU General Public License v2.0 5 votes vote down vote up
public HeadsUpNotificationView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HeadsUpNotificationView);
    mRipple = a.getBoolean(R.styleable.HeadsUpNotificationView_ripple, false);
    a.recycle();

    mTimeout = new Timeout();

    float densityScale = getResources().getDisplayMetrics().density;
    float pagingTouchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
    mSwipeHelperX = new SwipeHelper(SwipeHelper.X, this, densityScale, pagingTouchSlop);
}
 
Example 13
Source File: ShowcaseView.java    From UltimateAndroid with Apache License 2.0 5 votes vote down vote up
private void updateStyle(TypedArray styled, boolean invalidate) {
    int backgroundColor = styled.getColor(R.styleable.ShowcaseView_sv_backgroundColor, Color.argb(128, 80, 80, 80));
    int showcaseColor = styled.getColor(R.styleable.ShowcaseView_sv_showcaseColor, HOLO_BLUE);
    String buttonText = styled.getString(R.styleable.ShowcaseView_sv_buttonText);
    if (TextUtils.isEmpty(buttonText)) {
        buttonText ="ok";
    }
    boolean tintButton = styled.getBoolean(R.styleable.ShowcaseView_sv_tintButtonColor, true);

    int titleTextAppearance = styled.getResourceId(R.styleable.ShowcaseView_sv_titleTextAppearance,
            R.style.TextAppearance_ShowcaseView_Title);
    int detailTextAppearance = styled.getResourceId(R.styleable.ShowcaseView_sv_detailTextAppearance,
            R.style.TextAppearance_ShowcaseView_Detail);

    styled.recycle();

    showcaseDrawer.setShowcaseColour(showcaseColor);
    showcaseDrawer.setBackgroundColour(backgroundColor);
    tintButton(showcaseColor, tintButton);
    mEndButton.setText(buttonText);
    textDrawer.setTitleStyling(titleTextAppearance);
    textDrawer.setDetailStyling(detailTextAppearance);
    hasAlteredText = true;

    if (invalidate) {
        invalidate();
    }
}
 
Example 14
Source File: ViewPagerView.java    From FastAccess with GNU General Public License v3.0 5 votes vote down vote up
public ViewPagerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    int[] attrsArray = {enabled};
    TypedArray array = context.obtainStyledAttributes(attrs, attrsArray);
    isEnabled = array.getBoolean(0, true);
    array.recycle();
}
 
Example 15
Source File: BootstrapThumbnail.java    From Android-Bootstrap with MIT License 5 votes vote down vote up
protected void initialise(AttributeSet attrs) {
    TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.BootstrapThumbnail);

    try {
        int typeOrdinal = a.getInt(R.styleable.BootstrapThumbnail_bootstrapBrand, -1);
        int sizeOrdinal = a.getInt(R.styleable.BootstrapThumbnail_bootstrapSize, -1);

        this.hasBorder = a.getBoolean(R.styleable.BootstrapCircleThumbnail_hasBorder, true);
        this.bootstrapSize = DefaultBootstrapSize.fromAttributeValue(sizeOrdinal).scaleFactor();

        if (typeOrdinal == -1) { // override to use Primary for default border (looks nicer)
            this.bootstrapBrand = DefaultBootstrapBrand.PRIMARY;
        }
        else {
            this.bootstrapBrand = DefaultBootstrapBrand.fromAttributeValue(typeOrdinal);
        }
    }
    finally {
        a.recycle();
    }

    placeholderPaint = new Paint();
    placeholderPaint.setColor(ColorUtils.resolveColor(R.color.bootstrap_gray_light, getContext()));
    placeholderPaint.setStyle(Paint.Style.FILL);
    placeholderPaint.setAntiAlias(true);

    this.baselineCornerRadius = getResources().getDimension(R.dimen.bthumbnail_rounded_corner);
    this.baselineBorderWidth = getResources().getDimension(R.dimen.bthumbnail_default_border);
    setScaleType(ScaleType.CENTER_CROP);

    super.initialise(attrs);
}
 
Example 16
Source File: OtpView.java    From android-otpview-pinview with MIT License 4 votes vote down vote up
public OtpView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  final Resources res = getResources();
  paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  paint.setStyle(Paint.Style.STROKE);
  animatorTextPaint.set(getPaint());
  final Resources.Theme theme = context.getTheme();
  TypedArray typedArray =
      theme.obtainStyledAttributes(attrs, R.styleable.OtpView, defStyleAttr, 0);
  viewType = typedArray.getInt(R.styleable.OtpView_viewType, VIEW_TYPE_NONE);
  otpViewItemCount = typedArray.getInt(R.styleable.OtpView_itemCount, DEFAULT_COUNT);
  otpViewItemHeight = (int) typedArray.getDimension(R.styleable.OtpView_itemHeight,
      res.getDimensionPixelSize(R.dimen.otp_view_item_size));
  otpViewItemWidth = (int) typedArray.getDimension(R.styleable.OtpView_itemWidth,
      res.getDimensionPixelSize(R.dimen.otp_view_item_size));
  otpViewItemSpacing = typedArray.getDimensionPixelSize(R.styleable.OtpView_itemSpacing,
      res.getDimensionPixelSize(R.dimen.otp_view_item_spacing));
  otpViewItemRadius = (int) typedArray.getDimension(R.styleable.OtpView_itemRadius, 0);
  lineWidth = (int) typedArray.getDimension(R.styleable.OtpView_lineWidth,
      res.getDimensionPixelSize(R.dimen.otp_view_item_line_width));
  lineColor = typedArray.getColorStateList(R.styleable.OtpView_lineColor);
  isCursorVisible = typedArray.getBoolean(R.styleable.OtpView_android_cursorVisible, true);
  cursorColor = typedArray.getColor(R.styleable.OtpView_cursorColor, getCurrentTextColor());
  cursorWidth = typedArray.getDimensionPixelSize(R.styleable.OtpView_cursorWidth,
      res.getDimensionPixelSize(R.dimen.otp_view_cursor_width));
  itemBackground = typedArray.getDrawable(R.styleable.OtpView_android_itemBackground);
  hideLineWhenFilled = typedArray.getBoolean(R.styleable.OtpView_hideLineWhenFilled, false);
  rtlTextDirection = typedArray.getBoolean(R.styleable.OtpView_rtlTextDirection, false);
  maskingChar = typedArray.getString(R.styleable.OtpView_maskingChar);
  typedArray.recycle();
  if (lineColor != null) {
    cursorLineColor = lineColor.getDefaultColor();
  }
  updateCursorHeight();
  checkItemRadius();
  setMaxLength(otpViewItemCount);
  paint.setStrokeWidth(lineWidth);
  setupAnimator();
  super.setCursorVisible(false);
  setTextIsSelectable(false);
}
 
Example 17
Source File: FABRevealMenu.java    From FABRevealMenu-master with Apache License 2.0 4 votes vote down vote up
private void initView(Context context, AttributeSet attrs) {
    mContext = context;

    //helper initialization
    viewHelper = new ViewHelper(context);
    animationHelper = new AnimationHelper(viewHelper);

    if (attrs != null) {
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FABRevealMenu, 0, 0);

        //background
        mMenuBackground = a.getColor(R.styleable.FABRevealMenu_menuBackgroundColor, getColor(R.color.colorWhite));
        mOverlayBackground = a.getColor(R.styleable.FABRevealMenu_overlayBackground, getColor(R.color.colorOverlayDark));

        //menu
        mMenuRes = a.getResourceId(R.styleable.FABRevealMenu_menuRes, -1);

        //custom view
        int customView = a.getResourceId(R.styleable.FABRevealMenu_menuCustomView, -1);
        if (customView != -1)
            mCustomView = LayoutInflater.from(context).inflate(customView, null);

        //direction
        mDirection = Direction.fromId(a.getInt(R.styleable.FABRevealMenu_menuDirection, 0));

        //title
        mTitleTextColor = a.getColor(R.styleable.FABRevealMenu_menuTitleTextColor, getColor(android.R.color.white));
        mTitleDisabledTextColor = a.getColor(R.styleable.FABRevealMenu_menuTitleDisabledTextColor, getColor(android.R.color.darker_gray));
        mShowTitle = a.getBoolean(R.styleable.FABRevealMenu_showTitle, true);
        mShowIcon = a.getBoolean(R.styleable.FABRevealMenu_showIcon, true);
        mShowOverlay = a.getBoolean(R.styleable.FABRevealMenu_showOverlay, true);

        //size
        mMenuSize = a.getInt(R.styleable.FABRevealMenu_menuSize, FAB_MENU_SIZE_NORMAL);

        //animation
        animateItems = a.getBoolean(R.styleable.FABRevealMenu_animateItems, true);

        //Font
        if (a.hasValue(R.styleable.FABRevealMenu_menuTitleFontFamily)) {
            int fontId = a.getResourceId(R.styleable.FABRevealMenu_menuTitleFontFamily, -1);
            if (fontId != -1)
                mMenuTitleTypeface = ResourcesCompat.getFont(context, fontId);
        }

        a.recycle();

        //initialization
        if (mMenuRes != -1) {
            setMenu(mMenuRes);
        } else if (mCustomView != null) {
            setCustomView(mCustomView);
        }
    }
}
 
Example 18
Source File: Kawaii_LoadingView.java    From Kawaii_LoadingView with Apache License 2.0 4 votes vote down vote up
/**
 * 步骤1:初始化动画的属性
 */
private void initAttrs(Context context, AttributeSet attrs) {

    // 控件资源名称
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.Kawaii_LoadingView);

    // 方块行数量(最少3行)
    lineNumber = typedArray.getInteger(R.styleable.Kawaii_LoadingView_lineNumber, 3);
    if (lineNumber < 3) {
        lineNumber = 3;
    }

    // 半个方块的宽度(dp)
    half_BlockWidth = typedArray.getDimension(R.styleable.Kawaii_LoadingView_half_BlockWidth, 30);
    // 方块间隔宽度(dp)
    blockInterval = typedArray.getDimension(R.styleable.Kawaii_LoadingView_blockInterval, 10);

    // 移动方块的圆角半径
    moveBlock_Angle = typedArray.getFloat(R.styleable.Kawaii_LoadingView_moveBlock_Angle, 10);
    // 固定方块的圆角半径
    fixBlock_Angle = typedArray.getFloat(R.styleable.Kawaii_LoadingView_fixBlock_Angle, 30);
    // 通过设置两个方块的圆角半径使得二者不同可以得到更好的动画效果哦

    // 方块颜色(使用十六进制代码,如#333、#8e8e8e)
    int defaultColor = context.getResources().getColor(R.color.colorAccent); // 默认颜色
    blockColor = typedArray.getColor(R.styleable.Kawaii_LoadingView_blockColor, defaultColor);

    // 移动方块的初始位置(即空白位置)
    initPosition = typedArray.getInteger(R.styleable.Kawaii_LoadingView_initPosition, 0);

    // 由于移动方块只能是外部方块,所以这里需要判断方块是否属于外部方块 -->关注1
    if (isInsideTheRect(initPosition, lineNumber)) {
        initPosition = 0;
    }
    // 动画方向是否 = 顺时针旋转
    isClock_Wise = typedArray.getBoolean(R.styleable.Kawaii_LoadingView_isClock_Wise, true);

    // 移动方块的移动速度
    // 注:不建议使用者将速度调得过快
    // 因为会导致ValueAnimator动画对象频繁重复的创建,存在内存抖动
    moveSpeed = typedArray.getInteger(R.styleable.Kawaii_LoadingView_moveSpeed, 250);

    // 设置移动方块动画的插值器
    int move_InterpolatorResId = typedArray.getResourceId(R.styleable.Kawaii_LoadingView_move_Interpolator,
            android.R.anim.linear_interpolator);
    move_Interpolator = AnimationUtils.loadInterpolator(context, move_InterpolatorResId);

    // 当方块移动后,需要实时更新的空白方块的位置
    mCurrEmptyPosition = initPosition;

    // 释放资源
    typedArray.recycle();
}
 
Example 19
Source File: SlidingUpPanelLayout.java    From AndroidAnimationExercise with Apache License 2.0 4 votes vote down vote up
public SlidingUpPanelLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    if (isInEditMode()) {
        mShadowDrawable = null;
        mDragHelper = null;
        return;
    }

    Interpolator scrollerInterpolator = null;
    if (attrs != null) {
        TypedArray defAttrs = context.obtainStyledAttributes(attrs, DEFAULT_ATTRS);

        if (defAttrs != null) {
            int gravity = defAttrs.getInt(0, Gravity.NO_GRAVITY);
            setGravity(gravity);
            defAttrs.recycle();
        }


        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SlidingUpPanelLayout);

        if (ta != null) {
            mPanelHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_umanoPanelHeight, -1);
            mShadowHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_umanoShadowHeight, -1);
            mParallaxOffset = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_umanoParallaxOffset, -1);

            mMinFlingVelocity = ta.getInt(R.styleable.SlidingUpPanelLayout_umanoFlingVelocity, DEFAULT_MIN_FLING_VELOCITY);
            mCoveredFadeColor = ta.getColor(R.styleable.SlidingUpPanelLayout_umanoFadeColor, DEFAULT_FADE_COLOR);

            mDragViewResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_umanoDragView, -1);
            mScrollableViewResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_umanoScrollableView, -1);

            mOverlayContent = ta.getBoolean(R.styleable.SlidingUpPanelLayout_umanoOverlay, DEFAULT_OVERLAY_FLAG);
            mClipPanel = ta.getBoolean(R.styleable.SlidingUpPanelLayout_umanoClipPanel, DEFAULT_CLIP_PANEL_FLAG);

            mAnchorPoint = ta.getFloat(R.styleable.SlidingUpPanelLayout_umanoAnchorPoint, DEFAULT_ANCHOR_POINT);

            mSlideState = PanelState.values()[ta.getInt(R.styleable.SlidingUpPanelLayout_umanoInitialState, DEFAULT_SLIDE_STATE.ordinal())];

            int interpolatorResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_umanoScrollInterpolator, -1);
            if (interpolatorResId != -1) {
                scrollerInterpolator = AnimationUtils.loadInterpolator(context, interpolatorResId);
            }
            ta.recycle();
        }
    }

    final float density = context.getResources().getDisplayMetrics().density;
    if (mPanelHeight == -1) {
        mPanelHeight = (int) (DEFAULT_PANEL_HEIGHT * density + 0.5f);
    }
    if (mShadowHeight == -1) {
        mShadowHeight = (int) (DEFAULT_SHADOW_HEIGHT * density + 0.5f);
    }
    if (mParallaxOffset == -1) {
        mParallaxOffset = (int) (DEFAULT_PARALLAX_OFFSET * density);
    }
    // If the shadow height is zero, don't show the shadow
    if (mShadowHeight > 0) {
        if (mIsSlidingUp) {
            mShadowDrawable = getResources().getDrawable(R.drawable.above_shadow);
        } else {
            mShadowDrawable = getResources().getDrawable(R.drawable.below_shadow);
        }
    } else {
        mShadowDrawable = null;
    }

    setWillNotDraw(false);

    mDragHelper = ViewDragHelper.create(this, 0.5f, scrollerInterpolator, new DragHelperCallback());
    mDragHelper.setMinVelocity(mMinFlingVelocity * density);

    mIsTouchEnabled = true;
}
 
Example 20
Source File: FloatingActionMenu.java    From ShareBox with Apache License 2.0 4 votes vote down vote up
private void init(Context context, AttributeSet attrs) {
    TypedArray attr = context.obtainStyledAttributes(attrs, R.styleable.FloatingActionMenu, 0, 0);
    mButtonSpacing = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_buttonSpacing, mButtonSpacing);
    mLabelsMargin = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_margin, mLabelsMargin);
    mLabelsPosition = attr.getInt(R.styleable.FloatingActionMenu_menu_labels_position, LABELS_POSITION_LEFT);
    mLabelsShowAnimation = attr.getResourceId(R.styleable.FloatingActionMenu_menu_labels_showAnimation,
            mLabelsPosition == LABELS_POSITION_LEFT ? R.anim.fab_slide_in_from_right : R.anim.fab_slide_in_from_left);
    mLabelsHideAnimation = attr.getResourceId(R.styleable.FloatingActionMenu_menu_labels_hideAnimation,
            mLabelsPosition == LABELS_POSITION_LEFT ? R.anim.fab_slide_out_to_right : R.anim.fab_slide_out_to_left);
    mLabelsPaddingTop = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_paddingTop, mLabelsPaddingTop);
    mLabelsPaddingRight = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_paddingRight, mLabelsPaddingRight);
    mLabelsPaddingBottom = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_paddingBottom, mLabelsPaddingBottom);
    mLabelsPaddingLeft = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_paddingLeft, mLabelsPaddingLeft);
    mLabelsTextColor = attr.getColorStateList(R.styleable.FloatingActionMenu_menu_labels_textColor);
    // set default value if null same as for textview
    if (mLabelsTextColor == null) {
        mLabelsTextColor = ColorStateList.valueOf(Color.WHITE);
    }
    mLabelsTextSize = attr.getDimension(R.styleable.FloatingActionMenu_menu_labels_textSize, getResources().getDimension(R.dimen.labels_text_size));
    mLabelsCornerRadius = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_cornerRadius, mLabelsCornerRadius);
    mLabelsShowShadow = attr.getBoolean(R.styleable.FloatingActionMenu_menu_labels_showShadow, true);
    mLabelsColorNormal = attr.getColor(R.styleable.FloatingActionMenu_menu_labels_colorNormal, 0xFF333333);
    mLabelsColorPressed = attr.getColor(R.styleable.FloatingActionMenu_menu_labels_colorPressed, 0xFF444444);
    mLabelsColorRipple = attr.getColor(R.styleable.FloatingActionMenu_menu_labels_colorRipple, 0x66FFFFFF);
    mMenuShowShadow = attr.getBoolean(R.styleable.FloatingActionMenu_menu_showShadow, true);
    mMenuShadowColor = attr.getColor(R.styleable.FloatingActionMenu_menu_shadowColor, 0x66000000);
    mMenuShadowRadius = attr.getDimension(R.styleable.FloatingActionMenu_menu_shadowRadius, mMenuShadowRadius);
    mMenuShadowXOffset = attr.getDimension(R.styleable.FloatingActionMenu_menu_shadowXOffset, mMenuShadowXOffset);
    mMenuShadowYOffset = attr.getDimension(R.styleable.FloatingActionMenu_menu_shadowYOffset, mMenuShadowYOffset);
    mMenuColorNormal = attr.getColor(R.styleable.FloatingActionMenu_menu_colorNormal, 0xFFDA4336);
    mMenuColorPressed = attr.getColor(R.styleable.FloatingActionMenu_menu_colorPressed, 0xFFE75043);
    mMenuColorRipple = attr.getColor(R.styleable.FloatingActionMenu_menu_colorRipple, 0x99FFFFFF);
    mAnimationDelayPerItem = attr.getInt(R.styleable.FloatingActionMenu_menu_animationDelayPerItem, 50);
    mIcon = attr.getDrawable(R.styleable.FloatingActionMenu_menu_icon);
    if (mIcon == null) {
        mIcon = getResources().getDrawable(R.drawable.fab_add);
    }
    mLabelsSingleLine = attr.getBoolean(R.styleable.FloatingActionMenu_menu_labels_singleLine, false);
    mLabelsEllipsize = attr.getInt(R.styleable.FloatingActionMenu_menu_labels_ellipsize, 0);
    mLabelsMaxLines = attr.getInt(R.styleable.FloatingActionMenu_menu_labels_maxLines, -1);
    mMenuFabSize = attr.getInt(R.styleable.FloatingActionMenu_menu_fab_size, FloatingActionButton.SIZE_NORMAL);
    mLabelsStyle = attr.getResourceId(R.styleable.FloatingActionMenu_menu_labels_style, 0);
    String customFont = attr.getString(R.styleable.FloatingActionMenu_menu_labels_customFont);
    try {
        if (!TextUtils.isEmpty(customFont)) {
            mCustomTypefaceFromFont = Typeface.createFromAsset(getContext().getAssets(), customFont);
        }
    } catch (RuntimeException ex) {
        throw new IllegalArgumentException("Unable to load specified custom font: " + customFont, ex);
    }
    mOpenDirection = attr.getInt(R.styleable.FloatingActionMenu_menu_openDirection, OPEN_UP);
    mBackgroundColor = attr.getColor(R.styleable.FloatingActionMenu_menu_backgroundColor, Color.TRANSPARENT);

    if (attr.hasValue(R.styleable.FloatingActionMenu_menu_fab_label)) {
        mUsingMenuLabel = true;
        mMenuLabelText = attr.getString(R.styleable.FloatingActionMenu_menu_fab_label);
    }

    if (attr.hasValue(R.styleable.FloatingActionMenu_menu_labels_padding)) {
        int padding = attr.getDimensionPixelSize(R.styleable.FloatingActionMenu_menu_labels_padding, 0);
        initPadding(padding);
    }

    mOpenInterpolator = new OvershootInterpolator();
    mCloseInterpolator = new AnticipateInterpolator();
    mLabelsContext = new ContextThemeWrapper(getContext(), mLabelsStyle);

    initBackgroundDimAnimation();
    createMenuButton();
    initMenuButtonAnimations(attr);

    attr.recycle();
}