diff --git a/AltdorferWetterCarts/.gitignore b/AltdorferWetterCarts/.gitignore new file mode 100644 index 0000000..2b75303 --- /dev/null +++ b/AltdorferWetterCarts/.gitignore @@ -0,0 +1,13 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/AltdorferWetterCarts/app/.gitignore b/AltdorferWetterCarts/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/AltdorferWetterCarts/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/AltdorferWetterCarts/app/build.gradle b/AltdorferWetterCarts/app/build.gradle new file mode 100644 index 0000000..6ecced8 --- /dev/null +++ b/AltdorferWetterCarts/app/build.gradle @@ -0,0 +1,35 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "de.mrsnorris.altdorferwettercarts" + minSdkVersion 24 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +repositories { + maven { url 'https://jitpack.io' } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support:support-v4:28.0.0' + implementation 'com.android.support:recyclerview-v7:28.0.0' + implementation 'com.android.support:design:28.0.0' + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha' + testImplementation 'junit:junit:4.13-beta-2' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/AltdorferWetterCarts/app/proguard-rules.pro b/AltdorferWetterCarts/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/AltdorferWetterCarts/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/AltdorferWetterCarts/app/src/androidTest/java/de/mrsnorris/altdorferwettercarts/ExampleInstrumentedTest.java b/AltdorferWetterCarts/app/src/androidTest/java/de/mrsnorris/altdorferwettercarts/ExampleInstrumentedTest.java new file mode 100644 index 0000000..5ad1c8d --- /dev/null +++ b/AltdorferWetterCarts/app/src/androidTest/java/de/mrsnorris/altdorferwettercarts/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.altdorferwettercarts; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.example.altdorferwettercarts", appContext.getPackageName()); + } +} diff --git a/AltdorferWetterCarts/app/src/main/AndroidManifest.xml b/AltdorferWetterCarts/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2cf7286 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailActivity.java b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailActivity.java new file mode 100644 index 0000000..454bd0c --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailActivity.java @@ -0,0 +1,81 @@ +package de.mrsnorris.altdorferwettercarts; + +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.design.widget.Snackbar; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.ActionBar; +import android.view.MenuItem; + +/** + * An activity representing a single Item detail screen. This + * activity is only used on narrow width devices. On tablet-size devices, + * item details are presented side-by-side with a list of items + * in a {@link ItemListActivity}. + */ +public class ItemDetailActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_item_detail); + Toolbar toolbar = (Toolbar) findViewById(R.id.detail_toolbar); + setSupportActionBar(toolbar); + + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Snackbar.make(view, "Replace with your own detail action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + + // Show the Up button in the action bar. + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + } + + // savedInstanceState is non-null when there is fragment state + // saved from previous configurations of this activity + // (e.g. when rotating the screen from portrait to landscape). + // In this case, the fragment will automatically be re-added + // to its container so we don't need to manually add it. + // For more information, see the Fragments API guide at: + // + // http://developer.android.com/guide/components/fragments.html + // + if (savedInstanceState == null) { + // Create the detail fragment and add it to the activity + // using a fragment transaction. + Bundle arguments = new Bundle(); + arguments.putString(ItemDetailFragment.ARG_ITEM_ID, + getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID)); + ItemDetailFragment fragment = new ItemDetailFragment(); + fragment.setArguments(arguments); + getSupportFragmentManager().beginTransaction() + .add(R.id.item_detail_container, fragment) + .commit(); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int id = item.getItemId(); + if (id == android.R.id.home) { + // This ID represents the Home or Up button. In the case of this + // activity, the Up button is shown. For + // more details, see the Navigation pattern on Android Design: + // + // http://developer.android.com/design/patterns/navigation.html#up-vs-back + // + navigateUpTo(new Intent(this, ItemListActivity.class)); + return true; + } + return super.onOptionsItemSelected(item); + } +} diff --git a/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailFragment.java b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailFragment.java new file mode 100644 index 0000000..fa75b99 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemDetailFragment.java @@ -0,0 +1,152 @@ +package de.mrsnorris.altdorferwettercarts; + +import android.app.Activity; +import android.graphics.Color; +import android.graphics.DashPathEffect; +import android.os.Bundle; +import android.support.design.widget.CollapsingToolbarLayout; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.example.altdorferwettercarts.dummy.DummyContent; +import com.github.mikephil.charting.charts.LineChart; +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.components.Legend; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.data.LineData; +import com.github.mikephil.charting.data.LineDataSet; +import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; + +import java.util.ArrayList; + +/** + * A fragment representing a single Item detail screen. + * This fragment is either contained in a {@link ItemListActivity} + * in two-pane mode (on tablets) or a {@link ItemDetailActivity} + * on handsets. + */ +public class ItemDetailFragment extends Fragment { + /** + * The fragment argument representing the item ID that this fragment + * represents. + */ + public static final String ARG_ITEM_ID = "item_id"; + + /** + * The dummy content this fragment is presenting. + */ + private DummyContent.DummyItem mItem; + + /** + * Mandatory empty constructor for the fragment manager to instantiate the + * fragment (e.g. upon screen orientation changes). + */ + public ItemDetailFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (getArguments().containsKey(ARG_ITEM_ID)) { + // Load the dummy content specified by the fragment + // arguments. In a real-world scenario, use a Loader + // to load content from a content provider. + mItem = DummyContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID)); + + Activity activity = this.getActivity(); + CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout); + if (appBarLayout != null) { + appBarLayout.setTitle(mItem.content); + } + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.item_detail, container, false); + + // Show the dummy content as text in a TextView. + if (mItem != null) { + // ((TextView) rootView.findViewById(R.id.item_detail)).setText(mItem.details); + } + + drawChart(rootView); + + return rootView; + } + + private void drawChart(View rootView) { + LineChart chart1 = rootView.findViewById(R.id.chart1); + + + chart1.setDrawGridBackground(true); + AxisBase yAxis = chart1.getAxisLeft(); + // axis range + yAxis.setAxisMaximum(40f); + yAxis.setAxisMinimum(-10f); + + chart1.getAxisRight().setEnabled(false); + + Legend l = chart1.getLegend(); + l.setForm(Legend.LegendForm.LINE); + + + + //https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/main/java/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java + ArrayList values = new ArrayList<>(); + + for (int i = 0; i < 40; i++) + { + float val = (float) (Math.random() * 60) - 10; + //values.add(new Entry(i, val, getResources().getDrawable(R.drawable.star))); + + values.add(new Entry(i, val)); + } + + + // create a dataset and give it a type + LineDataSet set1 = new LineDataSet(values, "DataSet 1"); + + set1.setDrawIcons(false); + + // draw dashed line + set1.enableDashedLine(10f, 5f, 0f); + + // black lines and points + set1.setColor(Color.BLACK); + set1.setCircleColor(Color.BLACK); + + // line thickness and point size + set1.setLineWidth(1f); + set1.setCircleRadius(3f); + + // draw points as solid circles + set1.setDrawCircleHole(false); + + // customize legend entry + set1.setFormLineWidth(1f); + set1.setFormLineDashEffect(new DashPathEffect(new float[]{10f, 5f}, 0f)); + set1.setFormSize(15.f); + + // text size of values + set1.setValueTextSize(9f); + + // draw selection line as dashed + set1.enableDashedHighlightLine(10f, 5f, 0f); + + ArrayList dataSets = new ArrayList<>(); + dataSets.add(set1); // add the data sets + + // create a data object with the data sets + LineData data = new LineData(dataSets); + + chart1.setData(data); + + + } +} diff --git a/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemListActivity.java b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemListActivity.java new file mode 100644 index 0000000..352c629 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/ItemListActivity.java @@ -0,0 +1,140 @@ +package de.mrsnorris.altdorferwettercarts; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; +import android.support.design.widget.FloatingActionButton; +import android.support.design.widget.Snackbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.example.altdorferwettercarts.dummy.DummyContent; + +import java.util.List; + +/** + * An activity representing a list of Items. This activity + * has different presentations for handset and tablet-size devices. On + * handsets, the activity presents a list of items, which when touched, + * lead to a {@link ItemDetailActivity} representing + * item details. On tablets, the activity presents the list of items and + * item details side-by-side using two vertical panes. + */ +public class ItemListActivity extends AppCompatActivity { + + /** + * Whether or not the activity is in two-pane mode, i.e. running on a tablet + * device. + */ + private boolean mTwoPane; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_item_list); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + toolbar.setTitle(getTitle()); + + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + 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(); + } + }); + + if (findViewById(R.id.item_detail_container) != null) { + // The detail container view will be present only in the + // large-screen layouts (res/values-w900dp). + // If this view is present, then the + // activity should be in two-pane mode. + mTwoPane = true; + } + + View recyclerView = findViewById(R.id.item_list); + assert recyclerView != null; + setupRecyclerView((RecyclerView) recyclerView); + } + + private void setupRecyclerView(@NonNull RecyclerView recyclerView) { + recyclerView.setAdapter(new SimpleItemRecyclerViewAdapter(this, DummyContent.ITEMS, mTwoPane)); + } + + public static class SimpleItemRecyclerViewAdapter + extends RecyclerView.Adapter { + + private final ItemListActivity mParentActivity; + private final List mValues; + private final boolean mTwoPane; + private final View.OnClickListener mOnClickListener = new View.OnClickListener() { + @Override + public void onClick(View view) { + DummyContent.DummyItem item = (DummyContent.DummyItem) view.getTag(); + if (mTwoPane) { + Bundle arguments = new Bundle(); + arguments.putString(ItemDetailFragment.ARG_ITEM_ID, item.id); + ItemDetailFragment fragment = new ItemDetailFragment(); + fragment.setArguments(arguments); + mParentActivity.getSupportFragmentManager().beginTransaction() + .replace(R.id.item_detail_container, fragment) + .commit(); + } else { + Context context = view.getContext(); + Intent intent = new Intent(context, ItemDetailActivity.class); + intent.putExtra(ItemDetailFragment.ARG_ITEM_ID, item.id); + + context.startActivity(intent); + } + } + }; + + SimpleItemRecyclerViewAdapter(ItemListActivity parent, + List items, + boolean twoPane) { + mValues = items; + mParentActivity = parent; + mTwoPane = twoPane; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_list_content, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + holder.mIdView.setText(mValues.get(position).id); + holder.mContentView.setText(mValues.get(position).content); + + holder.itemView.setTag(mValues.get(position)); + holder.itemView.setOnClickListener(mOnClickListener); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + class ViewHolder extends RecyclerView.ViewHolder { + final TextView mIdView; + final TextView mContentView; + + ViewHolder(View view) { + super(view); + mIdView = (TextView) view.findViewById(R.id.id_text); + mContentView = (TextView) view.findViewById(R.id.content); + } + } + } +} diff --git a/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/dummy/DummyContent.java b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/dummy/DummyContent.java new file mode 100644 index 0000000..c2e11fb --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/java/de/mrsnorris/altdorferwettercarts/dummy/DummyContent.java @@ -0,0 +1,72 @@ +package com.example.altdorferwettercarts.dummy; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + *

+ * TODO: Replace all uses of this class before publishing your app. + */ +public class DummyContent { + + /** + * An array of sample (dummy) items. + */ + public static final List ITEMS = new ArrayList(); + + /** + * A map of sample (dummy) items, by ID. + */ + public static final Map ITEM_MAP = new HashMap(); + + private static final int COUNT = 25; + + static { + // Add some sample items. + for (int i = 1; i <= COUNT; i++) { + addItem(createDummyItem(i)); + } + } + + private static void addItem(DummyItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static DummyItem createDummyItem(int position) { + return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position)); + } + + private static String makeDetails(int position) { + StringBuilder builder = new StringBuilder(); + builder.append("Details about Item: ").append(position); + for (int i = 0; i < position; i++) { + builder.append("\nMore details information here."); + } + return builder.toString(); + } + + /** + * A dummy item representing a piece of content. + */ + public static class DummyItem { + public final String id; + public final String content; + public final String details; + + public DummyItem(String id, String content, String details) { + this.id = id; + this.content = content; + this.details = details; + } + + @Override + public String toString() { + return content; + } + } +} diff --git a/AltdorferWetterCarts/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/AltdorferWetterCarts/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/AltdorferWetterCarts/app/src/main/res/drawable/ic_launcher_background.xml b/AltdorferWetterCarts/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AltdorferWetterCarts/app/src/main/res/layout-w900dp/item_list.xml b/AltdorferWetterCarts/app/src/main/res/layout-w900dp/item_list.xml new file mode 100644 index 0000000..38e07dc --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout-w900dp/item_list.xml @@ -0,0 +1,39 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/layout/activity_item_detail.xml b/AltdorferWetterCarts/app/src/main/res/layout/activity_item_detail.xml new file mode 100644 index 0000000..ff67c61 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout/activity_item_detail.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/layout/activity_item_list.xml b/AltdorferWetterCarts/app/src/main/res/layout/activity_item_list.xml new file mode 100644 index 0000000..0e2bf4c --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout/activity_item_list.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/layout/item_detail.xml b/AltdorferWetterCarts/app/src/main/res/layout/item_detail.xml new file mode 100644 index 0000000..4095a5e --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout/item_detail.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/AltdorferWetterCarts/app/src/main/res/layout/item_list.xml b/AltdorferWetterCarts/app/src/main/res/layout/item_list.xml new file mode 100644 index 0000000..6a15760 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout/item_list.xml @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/layout/item_list_content.xml b/AltdorferWetterCarts/app/src/main/res/layout/item_list_content.xml new file mode 100644 index 0000000..395ec3e --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/layout/item_list_content.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher.png b/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..898f3ed Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..dffca36 Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher.png b/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..64ba76f Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..dae5e08 Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..e5ed465 Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..14ed0af Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..b0907ca Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..d8ae031 Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..2c18de9 Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..beed3cd Binary files /dev/null and b/AltdorferWetterCarts/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/AltdorferWetterCarts/app/src/main/res/values/colors.xml b/AltdorferWetterCarts/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..69b2233 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #008577 + #00574B + #D81B60 + diff --git a/AltdorferWetterCarts/app/src/main/res/values/dimens.xml b/AltdorferWetterCarts/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..868016b --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + 16dp + 200dp + 200dp + 16dp + diff --git a/AltdorferWetterCarts/app/src/main/res/values/strings.xml b/AltdorferWetterCarts/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..b972773 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + AltdorferWetterCarts + Item Detail + diff --git a/AltdorferWetterCarts/app/src/main/res/values/styles.xml b/AltdorferWetterCarts/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..545b9c6 --- /dev/null +++ b/AltdorferWetterCarts/app/src/main/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + +