/**
|
* Copyright 2015 bingoogolapple
|
* <p/>
|
* 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
|
* <p/>
|
* http://www.apache.org/licenses/LICENSE-2.0
|
* <p/>
|
* 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.hdl.photovoltaic.widget.refreshlayout;
|
|
import android.content.Context;
|
import android.graphics.drawable.AnimationDrawable;
|
import android.util.AttributeSet;
|
import android.widget.ImageView;
|
import android.widget.RelativeLayout;
|
|
import androidx.annotation.DrawableRes;
|
import androidx.core.view.ViewCompat;
|
|
import com.hdl.photovoltaic.R;
|
|
|
public class HDLRefreshView extends RelativeLayout {
|
private ImageView mPullDownView;
|
private ImageView mReleaseRefreshingView;
|
|
private AnimationDrawable mChangeToReleaseRefreshAd;
|
private AnimationDrawable mRefreshingAd;
|
|
private int mChangeToReleaseRefreshAnimResId;
|
private int mRefreshingAnimResId;
|
|
public HDLRefreshView(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
}
|
|
@Override
|
protected void onFinishInflate() {
|
super.onFinishInflate();
|
mPullDownView = (ImageView) findViewById(R.id.iv_pull_down);
|
mReleaseRefreshingView = (ImageView) findViewById(R.id.iv_release_refreshing);
|
}
|
|
public void setPullDownImageResource(@DrawableRes int resId) {
|
mPullDownView.setImageResource(resId);
|
}
|
|
public void setChangeToReleaseRefreshAnimResId(@DrawableRes int resId) {
|
mChangeToReleaseRefreshAnimResId = resId;
|
mReleaseRefreshingView.setImageResource(mChangeToReleaseRefreshAnimResId);
|
}
|
|
public void setRefreshingAnimResId(@DrawableRes int resId) {
|
mRefreshingAnimResId = resId;
|
}
|
|
public void handleScale(float scale) {
|
scale = 0.1f + 0.9f * scale;
|
|
ViewCompat.setPivotX(mPullDownView, mPullDownView.getWidth() * 0.5f);
|
ViewCompat.setPivotY(mPullDownView, mPullDownView.getHeight() * 0.5f);
|
ViewCompat.setScaleX(mPullDownView, scale);
|
ViewCompat.setScaleY(mPullDownView, scale);
|
}
|
|
public void changeToIdle() {
|
|
stopChangeToReleaseRefreshAd();
|
stopRefreshingAd();
|
|
mPullDownView.setVisibility(VISIBLE);
|
mReleaseRefreshingView.setVisibility(INVISIBLE);
|
}
|
|
public void changeToPullDown() {
|
mPullDownView.setVisibility(VISIBLE);
|
mReleaseRefreshingView.setVisibility(INVISIBLE);
|
}
|
|
public void changeToReleaseRefresh() {
|
mReleaseRefreshingView.setImageResource(mChangeToReleaseRefreshAnimResId);
|
mChangeToReleaseRefreshAd = (AnimationDrawable) mReleaseRefreshingView.getDrawable();
|
|
mReleaseRefreshingView.setVisibility(VISIBLE);
|
mPullDownView.setVisibility(INVISIBLE);
|
|
mChangeToReleaseRefreshAd.start();
|
}
|
|
public void changeToRefreshing() {
|
stopChangeToReleaseRefreshAd();
|
|
mReleaseRefreshingView.setImageResource(mRefreshingAnimResId);
|
mRefreshingAd = (AnimationDrawable) mReleaseRefreshingView.getDrawable();
|
|
mReleaseRefreshingView.setVisibility(VISIBLE);
|
mPullDownView.setVisibility(INVISIBLE);
|
|
mRefreshingAd.start();
|
}
|
|
public void onEndRefreshing() {
|
stopChangeToReleaseRefreshAd();
|
stopRefreshingAd();
|
}
|
|
private void stopRefreshingAd() {
|
if (mRefreshingAd != null) {
|
mRefreshingAd.stop();
|
mRefreshingAd = null;
|
}
|
}
|
|
private void stopChangeToReleaseRefreshAd() {
|
if (mChangeToReleaseRefreshAd != null) {
|
mChangeToReleaseRefreshAd.stop();
|
mChangeToReleaseRefreshAd = null;
|
}
|
}
|
}
|