/*
* Copyright (C) 2015 Brent Marriott
*
* 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.hookedonplay.decoviewsample;
import android.graphics.Color;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.TextView;
import com.hookedonplay.decoviewlib.DecoView;
import com.hookedonplay.decoviewlib.charts.ChartSeries;
import com.hookedonplay.decoviewlib.charts.SeriesItem;
import com.hookedonplay.decoviewlib.events.DecoEvent;
public class SamplePauseFragment extends SampleFragment {
private int mSeries1Index;
private int mPieIndex;
public SamplePauseFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_sample_pause, container, false);
}
@Override
protected void createTracks() {
final DecoView decoView = getDecoView();
final View view = getView();
if (decoView == null || view == null) {
return;
}
view.setBackgroundColor(Color.argb(255, 64, 96, 214));
decoView.executeReset();
decoView.deleteAll();
final float seriesMax = 100f;
float circleInset = getDimension(18);
SeriesItem seriesBack1Item = new SeriesItem.Builder(Color.parseColor("#11000000"))
.setRange(0, seriesMax, 0)
.setChartStyle(SeriesItem.ChartStyle.STYLE_PIE)
.setInset(new PointF(circleInset, circleInset))
.build();
mPieIndex = decoView.addSeries(seriesBack1Item);
SeriesItem series1Item = new SeriesItem.Builder(Color.parseColor("#FFFFC107"))
.setRange(0, seriesMax, 0)
.setLineWidth(getDimension(36))
.setInterpolator(new LinearInterpolator())
.build();
series1Item.addArcSeriesItemListener(new SeriesItem.SeriesItemListener() {
@Override
public void onSeriesItemAnimationProgress(float percentComplete, float currentPosition) {
decoView.getChartSeries(mPieIndex).setPosition(percentComplete < 1.0f ? percentComplete * seriesMax : 0f);
}
@Override
public void onSeriesItemDisplayProgress(float percentComplete) {
}
});
mSeries1Index = decoView.addSeries(series1Item);
final TextView textPause = (TextView) view.findViewById(R.id.textViewPause);
final DecoEvent.ExecuteEventListener eventListener = new DecoEvent.ExecuteEventListener() {
@Override
public void onEventStart(DecoEvent event) {
textPause.setText("PAUSE");
}
@Override
public void onEventEnd(DecoEvent event) {
textPause.setText("");
decoView.getChartSeries(mPieIndex).reset();
}
};
Button buttonEmpty = (Button) view.findViewById(R.id.buttonEmpty);
buttonEmpty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
decoView.addEvent(new DecoEvent.Builder(0)
.setIndex(mSeries1Index)
.setListener(eventListener)
.build());
}
});
Button buttonFifty = (Button) view.findViewById(R.id.buttonFifty);
buttonFifty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
decoView.addEvent(new DecoEvent.Builder(seriesMax * 0.5f)
.setIndex(mSeries1Index)
.setListener(eventListener)
.build());
}
});
Button buttonFull = (Button) view.findViewById(R.id.buttonFull);
buttonFull.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
decoView.addEvent(new DecoEvent.Builder(seriesMax)
.setIndex(mSeries1Index)
.setListener(eventListener)
.build());
}
});
textPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChartSeries series = decoView.getChartSeries(mSeries1Index);
if (series.isPaused()) {
series.resume();
} else {
if (series.pause()) {
textPause.setText("RESUME");
decoView.getChartSeries(mPieIndex).reset();
}
}
}
});
}
@Override
protected void setupEvents() {
// Not scheduled events, all user initiated
}
}