| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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.taobao.weex.ui.view.refresh.core; |
| |
| import android.content.Context; |
| import android.util.AttributeSet; |
| import android.view.Gravity; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.FrameLayout; |
| import android.widget.LinearLayout; |
| |
| import com.taobao.weex.common.WXThread; |
| import com.taobao.weex.ui.view.refresh.circlebar.CircleProgressBar; |
| |
| public class WXRefreshView extends FrameLayout { |
| |
| private CircleProgressBar circleProgressBar; |
| private LinearLayout linearLayout; |
| |
| public WXRefreshView(Context context) { |
| super(context); |
| setupViews(); |
| } |
| |
| public WXRefreshView(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| setupViews(); |
| } |
| |
| public WXRefreshView(Context context, AttributeSet attrs, int defStyleAttr) { |
| super(context, attrs, defStyleAttr); |
| setupViews(); |
| } |
| |
| private void setupViews() { |
| linearLayout = new LinearLayout(getContext()); |
| FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams |
| .MATCH_PARENT,FrameLayout |
| .LayoutParams.MATCH_PARENT); |
| linearLayout.setOrientation(LinearLayout.VERTICAL); |
| linearLayout.setGravity(Gravity.CENTER); |
| addView(linearLayout,lp); |
| } |
| |
| public void setContentGravity(int gravity) { |
| if (linearLayout != null) { |
| linearLayout.setGravity(gravity); |
| } |
| } |
| |
| @Override |
| public boolean post(Runnable action) { |
| return super.post(WXThread.secure(action)); |
| } |
| |
| /** |
| * Setting refresh view or loading view |
| * |
| * @param view refresh or loading |
| */ |
| public void setRefreshView(final View view) { |
| if (view == null) |
| return; |
| post(new Runnable() { |
| @Override |
| public void run() { |
| View child = null; |
| View temp = view; |
| if (view.getParent() != null) { |
| ((ViewGroup) view.getParent()).removeView(view); |
| } |
| for (int i = 0;i<((ViewGroup)temp).getChildCount(); i++) { |
| child = ((ViewGroup) temp).getChildAt(i); |
| if (child instanceof CircleProgressBar) |
| circleProgressBar = (CircleProgressBar) child; |
| } |
| linearLayout.addView(temp); |
| } |
| }); |
| } |
| |
| /** |
| * Set loading_indicator bgColor |
| * |
| * @param color |
| */ |
| public void setProgressBgColor(int color) { |
| if (circleProgressBar != null) { |
| circleProgressBar.setBackgroundColor(color); |
| } |
| } |
| |
| /** |
| * Set loading_indicator color |
| * |
| * @param color |
| */ |
| public void setProgressColor(int color) { |
| if (circleProgressBar != null) { |
| circleProgressBar.setColorSchemeColors(color); |
| } |
| } |
| |
| protected void startAnimation() { |
| if (circleProgressBar != null) { |
| circleProgressBar.start(); |
| } |
| } |
| |
| /** |
| * Set the start and end trim for the progress spinner arc. |
| * |
| * @param startAngle start angle |
| * @param endAngle end angle |
| */ |
| public void setStartEndTrim(float startAngle, float endAngle) { |
| if (circleProgressBar != null) { |
| circleProgressBar.setStartEndTrim(startAngle, endAngle); |
| } |
| } |
| |
| protected void stopAnimation() { |
| if (circleProgressBar != null) { |
| circleProgressBar.stop(); |
| } |
| } |
| |
| /** |
| * Set the amount of rotation to apply to the progress spinner. |
| * |
| * @param rotation Rotation is from [0..1] |
| */ |
| public void setProgressRotation(float rotation) { |
| if (circleProgressBar != null) |
| circleProgressBar.setProgressRotation(rotation); |
| } |
| } |