Scenes in ShowWorkoutActivity

This commit is contained in:
jannis 2019-09-02 12:55:09 +02:00
parent 4f1e84bf02
commit ec73699411
2 changed files with 79 additions and 8 deletions

View File

@ -26,12 +26,15 @@ import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.transition.Scene;
import android.transition.TransitionManager;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.content.FileProvider;
@ -86,6 +89,14 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
FixedPixelCircle highlightingCircle;
Handler mHandler= new Handler();
Scene sceneOverview;
Scene speedDiagramScene;
Scene heightDiagramScene;
Scene mapScene;
LineChart speedDiagram;
LineChart heightDiagram;
ViewGroup sceneRoot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -101,6 +112,9 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
theme= getTheme();
root= findViewById(R.id.showWorkoutRoot);
sceneRoot= findViewById(R.id.showWorkoutSceneRoot);
ViewGroup sceneLayout= findViewById(R.id.showWorkoutDefaultSceneRoot);
sceneOverview= new Scene(sceneRoot, sceneLayout);
addText(getString(R.string.comment) + ": " + workout.comment).setOnClickListener(v -> {
TextView textView= (TextView)v;
@ -138,9 +152,24 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
addHeightDiagram();
createScenes();
}
void createScenes(){
speedDiagramScene= createDiagramScene(speedDiagram);
heightDiagramScene= createDiagramScene(heightDiagram);
mapScene= new Scene(sceneRoot, map);
}
Scene createDiagramScene(LineChart chart){
LinearLayout layout= new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(map, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getMapHeight()));
layout.addView(chart, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return new Scene(sceneRoot, layout);
}
void openEditCommentDialog(final TextView change){
final EditText editText= new EditText(this);
editText.setText(workout.comment);
@ -253,6 +282,8 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
});
chart.invalidate();
converter.afterAdd(chart);
root.addView(chart, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getWindowManager().getDefaultDisplay().getWidth()*3/4));
}
@ -263,6 +294,7 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
String getName();
String getDescription();
boolean compare(WorkoutSample sample, Entry entry);
void afterAdd(LineChart chart);
}
void addHeightDiagram(){
@ -294,6 +326,12 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
public boolean compare(WorkoutSample sample, Entry entry) {
return sample.tmpHeightEntry.equalTo(entry);
}
@Override
public void afterAdd(LineChart chart) {
heightDiagram= chart;
heightDiagram.setOnClickListener(v -> TransitionManager.go(heightDiagramScene));
}
});
}
@ -328,6 +366,12 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
public boolean compare(WorkoutSample sample, Entry entry) {
return sample.tmpSpeedEntry.equalTo(entry);
}
@Override
public void afterAdd(LineChart chart) {
speedDiagram= chart;
heightDiagram.setOnClickListener(v -> TransitionManager.go(speedDiagramScene));
}
});
}
@ -357,7 +401,7 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
map.getModel().mapViewPosition.setMapLimit(bounds);
root.addView(map, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getWindowManager().getDefaultDisplay().getWidth()*3/4));
root.addView(map, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getMapHeight()));
map.setAlpha(0);
@ -367,6 +411,24 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
Paint pRed= AndroidGraphicFactory.INSTANCE.createPaint();
pRed.setColor(Color.RED);
map.addLayer(new FixedPixelCircle(samples.get(samples.size()-1).toLatLong(), 20, pRed, null));
map.setOnClickListener(v -> goToMapScene());
goToMapScene();
}
private void goToMapScene(){
TransitionManager.go(mapScene);
map.setOnClickListener(null);
}
private void leaveMapScene(){
TransitionManager.go(sceneOverview);
map.setOnClickListener(v -> goToMapScene());
}
int getMapHeight(){
return getWindowManager().getDefaultDisplay().getWidth()*3/4;
}
@Override

View File

@ -18,16 +18,25 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/showWorkoutSceneRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.ShowWorkoutActivity">
<ScrollView
android:id="@+id/showWorkoutDefaultSceneRoot"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/showWorkoutRoot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp"></LinearLayout>
</ScrollView>
</ScrollView>
</LinearLayout>