Mise a jour de graphe.
This commit is contained in:
parent
dbb108dd73
commit
53f6876b5d
@ -34,12 +34,12 @@ android {
|
||||
dependencies {
|
||||
|
||||
implementation 'com.jjoe64:graphview:4.2.2'
|
||||
implementation 'androidx.appcompat:appcompat:1.3.1'
|
||||
implementation 'androidx.appcompat:appcompat:1.4.0'
|
||||
implementation 'com.google.android.material:material:1.4.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
|
||||
implementation 'androidx.navigation:navigation-fragment:2.3.5'
|
||||
implementation 'androidx.navigation:navigation-ui:2.3.5'
|
||||
testImplementation 'junit:junit:4.+'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
package com.bernard.calchulator;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
|
||||
import com.bernard.calchulator.databinding.FragmentFirstBinding;
|
||||
|
||||
public class FirstFragment extends Fragment {
|
||||
|
||||
private FragmentFirstBinding binding;
|
||||
|
||||
@Override
|
||||
public View onCreateView(
|
||||
LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState
|
||||
) {
|
||||
|
||||
binding = FragmentFirstBinding.inflate(inflater, container, false);
|
||||
return binding.getRoot();
|
||||
|
||||
}
|
||||
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
binding.buttonFirst.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
NavHostFragment.findNavController(FirstFragment.this)
|
||||
.navigate(R.id.action_FirstFragment_to_SecondFragment);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
binding = null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,76 +0,0 @@
|
||||
package com.bernard.calchulator;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.navigation.NavController;
|
||||
import androidx.navigation.Navigation;
|
||||
import androidx.navigation.ui.AppBarConfiguration;
|
||||
import androidx.navigation.ui.NavigationUI;
|
||||
|
||||
import com.bernard.calchulator.databinding.ActivityMainBinding;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
private AppBarConfiguration appBarConfiguration;
|
||||
private ActivityMainBinding binding;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
binding = ActivityMainBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
setSupportActionBar(binding.toolbar);
|
||||
|
||||
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
|
||||
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
|
||||
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
|
||||
|
||||
binding.fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
||||
.setAction("Action", null).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
if (id == R.id.action_settings) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
|
||||
return NavigationUI.navigateUp(navController, appBarConfiguration)
|
||||
|| super.onSupportNavigateUp();
|
||||
}
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
package com.bernard.calchulator;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
|
||||
import com.bernard.calchulator.databinding.FragmentSecondBinding;
|
||||
|
||||
public class SecondFragment extends Fragment {
|
||||
|
||||
private FragmentSecondBinding binding;
|
||||
|
||||
@Override
|
||||
public View onCreateView(
|
||||
LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState
|
||||
) {
|
||||
|
||||
binding = FragmentSecondBinding.inflate(inflater, container, false);
|
||||
return binding.getRoot();
|
||||
|
||||
}
|
||||
|
||||
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
binding.buttonSecond.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
NavHostFragment.findNavController(SecondFragment.this)
|
||||
.navigate(R.id.action_SecondFragment_to_FirstFragment);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
binding = null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -16,6 +16,7 @@ import com.jjoe64.graphview.series.DataPoint;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class EMorphApplication extends Application {
|
||||
@ -210,7 +211,7 @@ public class EMorphApplication extends Application {
|
||||
}
|
||||
public MeasureOnSubject getMos(long subjectID, long measureID){
|
||||
Cursor dbResult = db.query("measuresOnSubjects",new String[]{"ID","subjectID","circAbdomen","circBras","circEpaules","circTaille","circCuisse","circCheville","circAvantBras"},
|
||||
"subjectID = ?",new String[]{Long.toString(subjectID)/*,Long.toString(measureID)*/},
|
||||
"subjectID = ? AND measureID = ?",new String[]{Long.toString(subjectID),Long.toString(measureID)},
|
||||
null, null, null);
|
||||
dbResult.moveToFirst();
|
||||
MeasureOnSubject out;
|
||||
@ -302,19 +303,28 @@ public class EMorphApplication extends Application {
|
||||
}
|
||||
|
||||
public static void putInitialData(SQLiteDatabase db){
|
||||
int measureCount = 1;
|
||||
int deltaMeasure = 3600*160;
|
||||
|
||||
|
||||
Random r = new Random();
|
||||
for (double[] testDatum : testData) {
|
||||
ContentValues cv = new ContentValues();
|
||||
cv.put("ID", testDatum[0]);
|
||||
cv.put("measureID", testDatum[1]);
|
||||
cv.put("subjectID", testDatum[2]);
|
||||
cv.put("circAbdomen", testDatum[8]);
|
||||
cv.put("circBras", testDatum[6]);
|
||||
cv.put("circEpaules", testDatum[7]);
|
||||
cv.put("circTaille", testDatum[9]);
|
||||
cv.put("circCuisse", testDatum[4]);
|
||||
cv.put("circCheville", testDatum[3]);
|
||||
cv.put("circAvantBras", testDatum[5]);
|
||||
db.insert("measuresOnSubjects", null, cv);
|
||||
double ab = testDatum[8], br = testDatum[6], ep = testDatum[7],
|
||||
ta = testDatum[9], cu = testDatum[4], ch = testDatum[3], av = testDatum[5];
|
||||
for(int i=0;i<measureCount;i++) {
|
||||
ContentValues cv = new ContentValues();
|
||||
cv.put("ID", testDatum[0]*measureCount+i);
|
||||
cv.put("measureID", testDatum[1]*measureCount+i);
|
||||
cv.put("subjectID", testDatum[2]);
|
||||
cv.put("circAbdomen", ab*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circBras", br*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circEpaules", ep*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circTaille", ta*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circCuisse", cu*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circCheville", ch*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
cv.put("circAvantBras", av*(1+Math.tanh(r.nextGaussian()/30+.1)));
|
||||
db.insert("measuresOnSubjects", null, cv);
|
||||
}
|
||||
}
|
||||
for (Object[] testDatum : testData2) {
|
||||
ContentValues cv = new ContentValues();
|
||||
@ -332,11 +342,13 @@ public class EMorphApplication extends Application {
|
||||
db.insert("groups", null, cv);
|
||||
}
|
||||
for(int i=1;i<=15;i++){
|
||||
ContentValues cv = new ContentValues();
|
||||
cv.put("ID", i);
|
||||
cv.put("groupID", i);
|
||||
cv.put("time", System.currentTimeMillis()/1000);
|
||||
db.insert("measures", null, cv);
|
||||
for(int j=0;j<measureCount;j++) {
|
||||
ContentValues cv = new ContentValues();
|
||||
cv.put("ID", i*measureCount+j);
|
||||
cv.put("groupID", i);
|
||||
cv.put("time", (System.currentTimeMillis() / 1000)-(measureCount-j+1)*deltaMeasure);
|
||||
db.insert("measures", null, cv);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.bernard.emorph.activities;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.provider.ContactsContract;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@ -15,7 +16,6 @@ import com.jjoe64.graphview.GraphView;
|
||||
import com.jjoe64.graphview.Viewport;
|
||||
import com.jjoe64.graphview.series.DataPoint;
|
||||
import com.jjoe64.graphview.series.PointsGraphSeries;
|
||||
import com.jjoe64.graphview.series.Series;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
@ -42,7 +42,7 @@ public class GraphActivity extends AppCompatActivity {
|
||||
|
||||
gv = findViewById(R.id.theGraphView);
|
||||
|
||||
String[] cs = getResources().getStringArray(R.array.distinctGraphColors);
|
||||
String[] cs = getResources().getStringArray(R.array. distinctGraphColors);
|
||||
colors = new int[cs.length];
|
||||
for (int i = 0; i < colors.length; i++)
|
||||
colors[i] = Integer.parseInt(cs[i].substring(1),16);
|
||||
@ -63,9 +63,9 @@ public class GraphActivity extends AppCompatActivity {
|
||||
int subjectCount = toGraph.getSubjectsID().length;
|
||||
DataPoint[] points0 = new DataPoint[subjectCount];
|
||||
double minx=1e10f,maxx=0f,miny=1e10f,maxy=0f;
|
||||
PointsGraphSeries[] pgs = new PointsGraphSeries[toGraph.getMeasuresID().length];
|
||||
PointsGraphSeries<DataPoint>[] pgs = new PointsGraphSeries[toGraph.getMeasuresID().length];
|
||||
for(int j=0; j<toGraph.getMeasuresID().length; j++) {
|
||||
|
||||
Log.d("GraphActivity","Doing measure with id "+toGraph.getMeasuresID()[j]);
|
||||
int realSize = 0;
|
||||
for (int i = 0; i < subjectCount; i++) {
|
||||
points0[i] = theApp.point(toGraph.getSubjectsID()[i], toGraph.getMeasuresID()[j]);
|
||||
@ -82,7 +82,9 @@ public class GraphActivity extends AppCompatActivity {
|
||||
System.arraycopy(points0,0,points,0,realSize);
|
||||
PointsGraphSeries<DataPoint> series = new PointsGraphSeries<>(points);
|
||||
series.setShape(PointsGraphSeries.Shape.POINT);
|
||||
series.setColor(colors[j]|0xFF000000);
|
||||
int theColor = colors[j]|0xFF000000;
|
||||
theColor = manipulateColor(theColor,.7f);
|
||||
series.setColor(theColor);
|
||||
series.setSize(10);
|
||||
pgs[j] = series;
|
||||
Log.d("NewSeries","Nouvelle serie de "+realSize+" points: couleur #"+Integer.toHexString(colors[j]));
|
||||
@ -131,14 +133,19 @@ public class GraphActivity extends AppCompatActivity {
|
||||
sdIMM = Math.sqrt((sdIMM/c)-moyIMM*moyIMM);
|
||||
sdIMG = Math.sqrt((sdIMG/c)-moyIMG*moyIMG); // Je crois que les formules sont bonnes.
|
||||
}
|
||||
|
||||
Log.d("Test","Test");
|
||||
Viewport theVP = gv.getViewport();
|
||||
theVP.setXAxisBoundsManual(true);
|
||||
theVP.setMinX(Math.min(minx,moyIMM-sdIMM)-.4);
|
||||
theVP.setMaxX(Math.max(maxx,moyIMM+sdIMM)+.4);
|
||||
theVP.setMinX(10);
|
||||
theVP.setMaxX(30);
|
||||
//theVP.setMinX(Math.min(minx,moyIMM-sdIMM)-.4);
|
||||
//theVP.setMaxX(Math.max(maxx,moyIMM+sdIMM)+.4);
|
||||
theVP.setYAxisBoundsManual(true);
|
||||
theVP.setMinY(Math.min(miny,moyIMG-sdIMG)-.4);
|
||||
theVP.setMaxY(Math.max(maxy,moyIMG+sdIMG)+.4);
|
||||
//theVP.setMinY(Math.min(miny,moyIMG-sdIMG)-.4);
|
||||
//theVP.setMaxY(Math.max(maxy,moyIMG+sdIMG)+.4);
|
||||
theVP.setMinY(0);
|
||||
theVP.setMaxY(16);
|
||||
|
||||
|
||||
int interColor = 0x53FFFF00;
|
||||
int extremeColor = 0x53FF0000;
|
||||
@ -160,6 +167,17 @@ public class GraphActivity extends AppCompatActivity {
|
||||
|
||||
}
|
||||
|
||||
public static int manipulateColor(int color, float factor) {
|
||||
int a = Color.alpha(color);
|
||||
int r = Math.round(Color.red(color) * factor);
|
||||
int g = Math.round(Color.green(color) * factor);
|
||||
int b = Math.round(Color.blue(color) * factor);
|
||||
return Color.argb(a,
|
||||
Math.min(r,255),
|
||||
Math.min(g,255),
|
||||
Math.min(b,255));
|
||||
}
|
||||
|
||||
public final int randCol(){
|
||||
Random r = new Random();
|
||||
return Color.HSVToColor(255, new float[]{r.nextFloat()*360,1.0f,1.0f});
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
package com.bernard.emorph.activities;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
public class PrepareMeasureActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_prepare_measure);
|
||||
}
|
||||
}
|
||||
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/Theme.CalcHulator.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/Theme.CalcHulator.PopupOverlay" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<include layout="@layout/content_main" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginEnd="@dimen/fab_margin"
|
||||
android:layout_marginBottom="16dp"
|
||||
app:srcCompat="@android:drawable/ic_dialog_email" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@ -1,10 +0,0 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="com.bernard.calchulator.MainActivity">
|
||||
<item
|
||||
android:id="@+id/action_settings"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_settings"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
@ -5,7 +5,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:7.0.3"
|
||||
classpath 'com.android.tools.build:gradle:7.0.4'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user