Android Open Source - friendica-for-android Loading Layout






From Project

Back to project page friendica-for-android.

License

The source code is released under:

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

If you think the Android project friendica-for-android 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 2011, 2012 Chris Banes./*from   ww  w.j  ava2s .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.handmark.pulltorefresh.library.internal;

import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.TextView;

import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.R;

public class LoadingLayout extends FrameLayout {

  static final int DEFAULT_ROTATION_ANIMATION_DURATION = 600;

  private final ImageView mHeaderImage;
  private final Matrix mHeaderImageMatrix;

  private final TextView mHeaderText;
  private final TextView mSubHeaderText;

  private String mPullLabel;
  private String mRefreshingLabel;
  private String mReleaseLabel;

  private float mRotationPivotX, mRotationPivotY;

  private final Animation mRotateAnimation;

  public LoadingLayout(Context context, final Mode mode, TypedArray attrs) {
    super(context);
    ViewGroup header = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.pull_to_refresh_header, this);
    mHeaderText = (TextView) header.findViewById(R.id.pull_to_refresh_text);
    mSubHeaderText = (TextView) header.findViewById(R.id.pull_to_refresh_sub_text);
    mHeaderImage = (ImageView) header.findViewById(R.id.pull_to_refresh_image);

    mHeaderImage.setScaleType(ScaleType.MATRIX);
    mHeaderImageMatrix = new Matrix();
    mHeaderImage.setImageMatrix(mHeaderImageMatrix);

    final Interpolator interpolator = new LinearInterpolator();
    mRotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
        0.5f);
    mRotateAnimation.setInterpolator(interpolator);
    mRotateAnimation.setDuration(DEFAULT_ROTATION_ANIMATION_DURATION);
    mRotateAnimation.setRepeatCount(Animation.INFINITE);
    mRotateAnimation.setRepeatMode(Animation.RESTART);

    switch (mode) {
      case PULL_UP_TO_REFRESH:
        // Load in labels
        mPullLabel = context.getString(R.string.pull_to_refresh_from_bottom_pull_label);
        mRefreshingLabel = context.getString(R.string.pull_to_refresh_from_bottom_refreshing_label);
        mReleaseLabel = context.getString(R.string.pull_to_refresh_from_bottom_release_label);
        break;

      case PULL_DOWN_TO_REFRESH:
      default:
        // Load in labels
        mPullLabel = context.getString(R.string.pull_to_refresh_pull_label);
        mRefreshingLabel = context.getString(R.string.pull_to_refresh_refreshing_label);
        mReleaseLabel = context.getString(R.string.pull_to_refresh_release_label);
        break;
    }

    if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderTextColor)) {
      ColorStateList colors = attrs.getColorStateList(R.styleable.PullToRefresh_ptrHeaderTextColor);
      setTextColor(null != colors ? colors : ColorStateList.valueOf(0xFF000000));
    }
    if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderSubTextColor)) {
      ColorStateList colors = attrs.getColorStateList(R.styleable.PullToRefresh_ptrHeaderSubTextColor);
      setSubTextColor(null != colors ? colors : ColorStateList.valueOf(0xFF000000));
    }
    if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderBackground)) {
      Drawable background = attrs.getDrawable(R.styleable.PullToRefresh_ptrHeaderBackground);
      if (null != background) {
        setBackgroundDrawable(background);
      }
    }

    // Try and get defined drawable from Attrs
    Drawable imageDrawable = null;
    if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawable)) {
      imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawable);
    }

    // If we don't have a user defined drawable, load the default
    if (null == imageDrawable) {
      imageDrawable = context.getResources().getDrawable(R.drawable.default_ptr_drawable);
    }

    // Set Drawable, and save width/height
    setLoadingDrawable(imageDrawable);

    reset();
  }

  public void reset() {
    mHeaderText.setText(Html.fromHtml(mPullLabel));
    mHeaderImage.setVisibility(View.VISIBLE);
    mHeaderImage.clearAnimation();

    resetImageRotation();

    if (TextUtils.isEmpty(mSubHeaderText.getText())) {
      mSubHeaderText.setVisibility(View.GONE);
    } else {
      mSubHeaderText.setVisibility(View.VISIBLE);
    }
  }

  public void releaseToRefresh() {
    mHeaderText.setText(Html.fromHtml(mReleaseLabel));
  }

  public void setPullLabel(String pullLabel) {
    mPullLabel = pullLabel;
  }

  public void refreshing() {
    mHeaderText.setText(Html.fromHtml(mRefreshingLabel));
    mHeaderImage.startAnimation(mRotateAnimation);

    mSubHeaderText.setVisibility(View.GONE);
  }

  public void setRefreshingLabel(String refreshingLabel) {
    mRefreshingLabel = refreshingLabel;
  }

  public void setReleaseLabel(String releaseLabel) {
    mReleaseLabel = releaseLabel;
  }

  public void pullToRefresh() {
    mHeaderText.setText(Html.fromHtml(mPullLabel));
  }

  public void setTextColor(ColorStateList color) {
    mHeaderText.setTextColor(color);
    mSubHeaderText.setTextColor(color);
  }

  public void setSubTextColor(ColorStateList color) {
    mSubHeaderText.setTextColor(color);
  }

  public void setTextColor(int color) {
    setTextColor(ColorStateList.valueOf(color));
  }

  public void setLoadingDrawable(Drawable imageDrawable) {
    // Set Drawable, and save width/height
    mHeaderImage.setImageDrawable(imageDrawable);
    mRotationPivotX = imageDrawable.getIntrinsicWidth() / 2f;
    mRotationPivotY = imageDrawable.getIntrinsicHeight() / 2f;
  }

  public void setSubTextColor(int color) {
    setSubTextColor(ColorStateList.valueOf(color));
  }

  public void setSubHeaderText(CharSequence label) {
    if (TextUtils.isEmpty(label)) {
      mSubHeaderText.setVisibility(View.GONE);
    } else {
      mSubHeaderText.setText(label);
      mSubHeaderText.setVisibility(View.VISIBLE);
    }
  }

  public void onPullY(float scaleOfHeight) {
    mHeaderImageMatrix.setRotate(scaleOfHeight * 90, mRotationPivotX, mRotationPivotY);
    mHeaderImage.setImageMatrix(mHeaderImageMatrix);
  }

  private void resetImageRotation() {
    mHeaderImageMatrix.reset();
    mHeaderImage.setImageMatrix(mHeaderImageMatrix);
  }
}




Java Source Code List

com.handmark.pulltorefresh.library.PullToRefreshAdapterViewBase.java
com.handmark.pulltorefresh.library.PullToRefreshBase.java
com.handmark.pulltorefresh.library.PullToRefreshExpandableListView.java
com.handmark.pulltorefresh.library.PullToRefreshGridView.java
com.handmark.pulltorefresh.library.PullToRefreshListView.java
com.handmark.pulltorefresh.library.PullToRefreshWebView.java
com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor.java
com.handmark.pulltorefresh.library.internal.IndicatorLayout.java
com.handmark.pulltorefresh.library.internal.LoadingLayout.java
de.wikilab.android.friendica01.FileUploadService.java
de.wikilab.android.friendica01.FragmentParentListener.java
de.wikilab.android.friendica01.GCMIntentService.java
de.wikilab.android.friendica01.HtmlImageHelper.java
de.wikilab.android.friendica01.LoginListener.java
de.wikilab.android.friendica01.Max.java
de.wikilab.android.friendica01.NotificationCheckerService.java
de.wikilab.android.friendica01.Notification.java
de.wikilab.android.friendica01.TwAjax.java
de.wikilab.android.friendica01.ViewServer.java
de.wikilab.android.friendica01.activity.FriendicaImgUploadActivity.java
de.wikilab.android.friendica01.activity.GenericContentActivity.java
de.wikilab.android.friendica01.activity.HomeActivity.java
de.wikilab.android.friendica01.activity.MainScreenActivity.java
de.wikilab.android.friendica01.activity.MessageDetailActivity.java
de.wikilab.android.friendica01.activity.MessagesActivity.java
de.wikilab.android.friendica01.activity.PreferenceContainerActivity.java
de.wikilab.android.friendica01.activity.PreferencesActivity.java
de.wikilab.android.friendica01.activity.UserProfileActivity.java
de.wikilab.android.friendica01.activity.WritePostActivity.java
de.wikilab.android.friendica01.adapter.HtmlStringArrayAdapter.java
de.wikilab.android.friendica01.adapter.MessageContentAdapter.java
de.wikilab.android.friendica01.adapter.MessageListAdapter.java
de.wikilab.android.friendica01.adapter.PhotoGalleryAdapter.java
de.wikilab.android.friendica01.adapter.PostListAdapter.java
de.wikilab.android.friendica01.fragment.ContentFragment.java
de.wikilab.android.friendica01.fragment.FriendListFragment.java
de.wikilab.android.friendica01.fragment.MainMenuFragment.java
de.wikilab.android.friendica01.fragment.MessageViewFragment.java
de.wikilab.android.friendica01.fragment.MessageWriteFragment.java
de.wikilab.android.friendica01.fragment.PhotoGalleryFragment.java
de.wikilab.android.friendica01.fragment.PostDetailFragment.java
de.wikilab.android.friendica01.fragment.PostListFragment.java
de.wikilab.android.friendica01.fragment.WelcomeFragment.java
de.wikilab.android.friendica01.fragment.WritePostFragment.java