Permalink
Browse files

Merge pull request #15 from xarnze/master

Added Stacked Bar Charts
  • Loading branch information...
Androguide committed Oct 20, 2014
2 parents a6fbac7 + 4d3c868 commit 028cd2ae6916308bbb96472aafa9ecd8b1343d5c
@@ -4,10 +4,11 @@
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
- <option name="ASSEMBLE_TASK_NAME" value="bundleDebug" />
+ <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugJava" />
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+ <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/res" />
<option name="LIBRARY_PROJECT" value="true" />
@@ -20,49 +21,58 @@
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/classes/debug" />
+ <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
<exclude-output />
<content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/r/test/debug" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test/debug" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test/debug" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test/debug" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/assets" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/tests/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/tests/assets" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/tests/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/tests/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/tests/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/tests/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/tests/resources" type="java-test-resource" />
- <excludeFolder url="file://$MODULE_DIR$/.settings" />
- <excludeFolder url="file://$MODULE_DIR$/build/apk" />
- <excludeFolder url="file://$MODULE_DIR$/build/assets" />
- <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
- <excludeFolder url="file://$MODULE_DIR$/build/classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/build/libs" />
- <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
- <excludeFolder url="file://$MODULE_DIR$/build/res" />
- <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
+ <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+ <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
@@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:0.7+'
+ classpath 'com.android.tools.build:gradle:0.12+'
}
}
apply plugin: 'android-library'
@@ -16,7 +16,7 @@ repositories {
android {
compileSdkVersion 19
- buildToolsVersion "18.1.1"
+ buildToolsVersion '19.1.0'
defaultConfig {
minSdkVersion 8
@@ -26,13 +26,17 @@
import android.graphics.Path;
import android.graphics.Region;
+import java.util.ArrayList;
+
public class Bar {
private int color;
private String name;
private float value;
private Path path;
private Region region;
+ private boolean isStackedBar;
+ private ArrayList<BarStackSegment> values = new ArrayList<BarStackSegment>();
public int getColor() {
return color;
@@ -64,5 +68,17 @@ public Region getRegion() {
public void setRegion(Region region) {
this.region = region;
}
+ public void setStackedBar(boolean stacked){
+ isStackedBar = stacked;
+ }
+ public boolean getStackedBar(){
+ return isStackedBar;
+ }
+ public void AddStackValue(BarStackSegment val){
+ values.add(val);
+ }
+ public ArrayList<BarStackSegment> getStackedValues(){
+ return values;
+ }
}
@@ -33,6 +33,7 @@
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
+import java.util.Collections;
public class BarGraph extends View {
@@ -129,15 +130,36 @@ public void onDraw(Canvas ca) {
int count = 0;
for (Bar p : points) {
- r.set((int) ((padding * 2) * count + padding + barWidth * count), (int) (getHeight() - bottomPadding - (usableHeight * (p.getValue() / maxValue))), (int) ((padding * 2) * count + padding + barWidth * (count + 1)), (int) (getHeight() - bottomPadding));
- path.addRect(new RectF(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding), Path.Direction.CW);
- p.setPath(path);
- p.setRegion(new Region(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding));
+ if(p.getStackedBar()){
+ ArrayList<BarStackSegment> values = new ArrayList<BarStackSegment>(p.getStackedValues());
+ int prevValue = 0;
+ for(BarStackSegment value : values) {
+ value.Value += prevValue;
+ prevValue += value.Value;
+ }
+ Collections.reverse(values);
+
+ for(BarStackSegment value : values) {
+ r.set((int) ((padding * 2) * count + padding + barWidth * count), (int) ((getHeight() - bottomPadding - (usableHeight * (value.Value / maxValue)))), (int) ((padding * 2) * count + padding + barWidth * (count + 1)), (int) ((getHeight() - bottomPadding)));
+ path.addRect(new RectF(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding), Path.Direction.CW);
+ p.setPath(path);
+ p.setRegion(new Region(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding));
+ this.p.setColor(value.Color);
+ this.p.setAlpha(255);
+ canvas.drawRect(r, this.p);
+ }
+ }else {
+ r.set((int) ((padding * 2) * count + padding + barWidth * count), (int) (getHeight() - bottomPadding - (usableHeight * (p.getValue() / maxValue))), (int) ((padding * 2) * count + padding + barWidth * (count + 1)), (int) (getHeight() - bottomPadding));
+ path.addRect(new RectF(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding), Path.Direction.CW);
+ p.setPath(path);
+ p.setRegion(new Region(r.left - selectPadding, r.top - selectPadding, r.right + selectPadding, r.bottom + selectPadding));
+ this.p.setColor(p.getColor());
+ this.p.setAlpha(255);
+ canvas.drawRect(r, this.p);
+ }
+
- this.p.setColor(p.getColor());
- this.p.setAlpha(255);
- canvas.drawRect(r, this.p);
this.p.setTextSize(20);
canvas.drawText(p.getName(), (int) (((r.left + r.right) / 2) - (this.p.measureText(p.getName()) / 2)), getHeight() - 5, this.p);
if (showBarText) {
@@ -0,0 +1,13 @@
+package com.echo.holographlibrary;
+
+/**
+ * Created by Aaron on 19/10/2014.
+ */
+public class BarStackSegment {
+ public int Value;
+ public int Color;
+ public BarStackSegment(int val, int color){
+ Value = val;
+ Color = color;
+ }
+}
Oops, something went wrong.

0 comments on commit 028cd2a

Please sign in to comment.