分享

Android ProgressBar详解以及自定义

 天海544 2014-10-20
/**
   * Create a new progress bar with range 0...100 and initial progress of 0.
   * @param context the application environment
   */
  public ProgressBar(Context context) {
      this(context, null);
  }
  
  public ProgressBar(Context context, AttributeSet attrs) {
      this(context, attrs, com.android.internal.R.attr.progressBarStyle);
  }
  public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
      this(context, attrs, defStyle, 0);
  }
  /**
   * @hide
   */
  public ProgressBar(Context context, AttributeSet attrs, int defStyle, int styleRes) {
      super(context, attrs, defStyle);
      mUiThreadId = Thread.currentThread().getId();
      initProgressBar();
      TypedArray a =
          context.obtainStyledAttributes(attrs, R.styleable.ProgressBar, defStyle, styleRes);
      
      mNoInvalidate = true;
      
      Drawable drawable = a.getDrawable(R.styleable.ProgressBar_progressDrawable);
      if (drawable != null) {
          drawable = tileify(drawable, false);
          // Calling this method can set mMaxHeight, make sure the corresponding
          // XML attribute for mMaxHeight is read after calling this method
          setProgressDrawable(drawable);
      }
      mDuration = a.getInt(R.styleable.ProgressBar_indeterminateDuration, mDuration);
      mMinWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_minWidth, mMinWidth);
      mMaxWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_maxWidth, mMaxWidth);
      mMinHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_minHeight, mMinHeight);
      mMaxHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_maxHeight, mMaxHeight);
      mBehavior = a.getInt(R.styleable.ProgressBar_indeterminateBehavior, mBehavior);
      final int resID = a.getResourceId(
              com.android.internal.R.styleable.ProgressBar_interpolator,
              android.R.anim. linear_interpolator); // default to linear interpolator
      if (resID > 0) {
          setInterpolator(context, resID);
      }
      setMax(a.getInt(R.styleable.ProgressBar_max, mMax));
      setProgress(a.getInt(R.styleable.ProgressBar_progress, mProgress));
      setSecondaryProgress(
              a.getInt(R.styleable.ProgressBar_secondaryProgress, mSecondaryProgress));
      drawable = a.getDrawable(R.styleable.ProgressBar_indeterminateDrawable);
      if (drawable != null) {
          drawable = tileifyIndeterminate(drawable);
          setIndeterminateDrawable(drawable);
      }
      mOnlyIndeterminate = a.getBoolean(
              R.styleable.ProgressBar_indeterminateOnly, mOnlyIndeterminate);
      mNoInvalidate = false;
      setIndeterminate( mOnlyIndeterminate || a.getBoolean(
              R.styleable.ProgressBar_indeterminate, mIndeterminate));
      mMirrorForRtl = a.getBoolean(R.styleable.ProgressBar_mirrorForRtl, mMirrorForRtl);
      a.recycle();
  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多