diff --git a/Challenge 1 - Algorithms/.classpath b/Challenge 1 - Algorithms/.classpath new file mode 100644 index 0000000..6220d0d --- /dev/null +++ b/Challenge 1 - Algorithms/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Challenge 1 - Algorithms/.gitignore b/Challenge 1 - Algorithms/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/Challenge 1 - Algorithms/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Challenge 1 - Algorithms/.project b/Challenge 1 - Algorithms/.project new file mode 100644 index 0000000..b12f45d --- /dev/null +++ b/Challenge 1 - Algorithms/.project @@ -0,0 +1,17 @@ + + + Challenge 1 - Algorithms + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Challenge 1 - Algorithms/src/Algorithms.java b/Challenge 1 - Algorithms/src/Algorithms.java new file mode 100644 index 0000000..e91a853 --- /dev/null +++ b/Challenge 1 - Algorithms/src/Algorithms.java @@ -0,0 +1,98 @@ + +import java.util.Arrays; +import java.util.*; + +public class Algorithms { + + public static String[] FindPairs(int[] testArray, int targetSum) { + + //Arrays.sort(testArray); + + Map testArrayMap = new HashMap(); + Set outputSet = new HashSet(); + + ArrayList outputs = new ArrayList(); + + for(int i=0;i + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+ \ No newline at end of file diff --git a/Challenge 2/.idea/gradle.xml b/Challenge 2/.idea/gradle.xml new file mode 100644 index 0000000..42d66cb --- /dev/null +++ b/Challenge 2/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/Challenge 2/.idea/jarRepositories.xml b/Challenge 2/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/Challenge 2/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/.idea/misc.xml b/Challenge 2/.idea/misc.xml new file mode 100644 index 0000000..dfd2c79 --- /dev/null +++ b/Challenge 2/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/.idea/runConfigurations.xml b/Challenge 2/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/Challenge 2/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/Challenge 2/.idea/vcs.xml b/Challenge 2/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Challenge 2/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/.gitignore b/Challenge 2/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/Challenge 2/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Challenge 2/app/build.gradle b/Challenge 2/app/build.gradle new file mode 100644 index 0000000..75feb0d --- /dev/null +++ b/Challenge 2/app/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 29 + buildToolsVersion "30.0.0" + + defaultConfig { + applicationId "com.sleepyjune.galleryapp" + minSdkVersion 21 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'com.google.android.material:material:1.0.0' +// implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' + implementation files('libs\\simple-xml-2.7.1.jar') + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + +} \ No newline at end of file diff --git a/Challenge 2/app/libs/simple-xml-2.7.1.jar b/Challenge 2/app/libs/simple-xml-2.7.1.jar new file mode 100644 index 0000000..913725d Binary files /dev/null and b/Challenge 2/app/libs/simple-xml-2.7.1.jar differ diff --git a/Challenge 2/app/proguard-rules.pro b/Challenge 2/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/Challenge 2/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 \ No newline at end of file diff --git a/Challenge 2/app/release/app-release.apk b/Challenge 2/app/release/app-release.apk new file mode 100644 index 0000000..2c32ca4 Binary files /dev/null and b/Challenge 2/app/release/app-release.apk differ diff --git a/Challenge 2/app/release/output.json b/Challenge 2/app/release/output.json new file mode 100644 index 0000000..ce85ce4 --- /dev/null +++ b/Challenge 2/app/release/output.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.sleepyjune.galleryapp", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "properties": [], + "versionCode": 1, + "versionName": "1", + "enabled": true, + "outputFile": "app-release.apk" + } + ] +} \ No newline at end of file diff --git a/Challenge 2/app/src/androidTest/java/com/sleepyjune/galleryapp/ExampleInstrumentedTest.java b/Challenge 2/app/src/androidTest/java/com/sleepyjune/galleryapp/ExampleInstrumentedTest.java new file mode 100644 index 0000000..55cbb58 --- /dev/null +++ b/Challenge 2/app/src/androidTest/java/com/sleepyjune/galleryapp/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.sleepyjune.galleryapp; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.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.getInstrumentation().getTargetContext(); + assertEquals("com.sleepyjune.galleryapp", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Challenge 2/app/src/main/AndroidManifest.xml b/Challenge 2/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7c5d738 --- /dev/null +++ b/Challenge 2/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/assets/PokemonData.xml b/Challenge 2/app/src/main/assets/PokemonData.xml new file mode 100644 index 0000000..796a233 --- /dev/null +++ b/Challenge 2/app/src/main/assets/PokemonData.xml @@ -0,0 +1,50 @@ + + + + + Bulbasaur + 1 + 001Bulbasaur + + + Charmander + 4 + 004Charmander + + + Squirtle + 7 + 007Squirtle + + + Pikachu + 25 + 025Pikachu + + + Psyduck + 54 + 054Psyduck + + + Eevee + 133 + 133Eevee + + + Snorlax + 143 + 143Snorlax + + + Mewtwo + 150 + 150Mewtwo + + + Mew + 151 + 151Mew + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/assets/images/001Bulbasaur.png b/Challenge 2/app/src/main/assets/images/001Bulbasaur.png new file mode 100644 index 0000000..ff6d416 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/001Bulbasaur.png differ diff --git a/Challenge 2/app/src/main/assets/images/004Charmander.png b/Challenge 2/app/src/main/assets/images/004Charmander.png new file mode 100644 index 0000000..6b91d79 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/004Charmander.png differ diff --git a/Challenge 2/app/src/main/assets/images/007Squirtle.png b/Challenge 2/app/src/main/assets/images/007Squirtle.png new file mode 100644 index 0000000..299b74d Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/007Squirtle.png differ diff --git a/Challenge 2/app/src/main/assets/images/025Pikachu.png b/Challenge 2/app/src/main/assets/images/025Pikachu.png new file mode 100644 index 0000000..16c1182 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/025Pikachu.png differ diff --git a/Challenge 2/app/src/main/assets/images/039Jigglypuff.png b/Challenge 2/app/src/main/assets/images/039Jigglypuff.png new file mode 100644 index 0000000..6dc8041 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/039Jigglypuff.png differ diff --git a/Challenge 2/app/src/main/assets/images/054Psyduck.png b/Challenge 2/app/src/main/assets/images/054Psyduck.png new file mode 100644 index 0000000..4609316 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/054Psyduck.png differ diff --git a/Challenge 2/app/src/main/assets/images/133Eevee.png b/Challenge 2/app/src/main/assets/images/133Eevee.png new file mode 100644 index 0000000..4406687 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/133Eevee.png differ diff --git a/Challenge 2/app/src/main/assets/images/143Snorlax.png b/Challenge 2/app/src/main/assets/images/143Snorlax.png new file mode 100644 index 0000000..8fa2360 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/143Snorlax.png differ diff --git a/Challenge 2/app/src/main/assets/images/150Mewtwo.png b/Challenge 2/app/src/main/assets/images/150Mewtwo.png new file mode 100644 index 0000000..6cc7469 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/150Mewtwo.png differ diff --git a/Challenge 2/app/src/main/assets/images/151Mew.png b/Challenge 2/app/src/main/assets/images/151Mew.png new file mode 100644 index 0000000..e99f365 Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/151Mew.png differ diff --git a/Challenge 2/app/src/main/assets/images/default_pokemon.png b/Challenge 2/app/src/main/assets/images/default_pokemon.png new file mode 100644 index 0000000..a72319b Binary files /dev/null and b/Challenge 2/app/src/main/assets/images/default_pokemon.png differ diff --git a/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailActivity.java b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailActivity.java new file mode 100644 index 0000000..4a8bc19 --- /dev/null +++ b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailActivity.java @@ -0,0 +1,53 @@ +package com.sleepyjune.galleryapp; + +import android.content.Intent; +import android.os.Bundle; + +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; + +import androidx.appcompat.widget.Toolbar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.ActionBar; + +import android.view.MenuItem; + +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); + + // Show the Up button in the action bar. + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle("Pokemon Name"); //not sure why this is needed + } + + if (savedInstanceState == null) { + Bundle arguments = new Bundle(); + arguments.putInt(ItemDetailFragment.ARG_ITEM_ID, + getIntent().getIntExtra(ItemDetailFragment.ARG_ITEM_ID, 0)); + 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) { + navigateUpTo(new Intent(this, ItemListActivity.class)); + + return true; + } + return super.onOptionsItemSelected(item); + } +} \ No newline at end of file diff --git a/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailFragment.java b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailFragment.java new file mode 100644 index 0000000..755139d --- /dev/null +++ b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemDetailFragment.java @@ -0,0 +1,64 @@ +package com.sleepyjune.galleryapp; + +import android.app.Activity; +import android.os.Bundle; + +import com.google.android.material.appbar.CollapsingToolbarLayout; +import com.sleepyjune.galleryapp.pokemon.Pokemon; +import com.sleepyjune.galleryapp.pokemon.PokemonList; + +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; + +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + + +public class ItemDetailFragment extends Fragment { + + public static final String ARG_ITEM_ID = "item_id"; + + private Pokemon mItem; + + public ItemDetailFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (getArguments().containsKey(ARG_ITEM_ID)) { + mItem = PokemonList.pokemonMap.get(getArguments().getInt(ARG_ITEM_ID)); + + Activity activity = this.getActivity(); + + Toolbar toolbar = (Toolbar) activity.findViewById(R.id.detail_toolbar); + if(toolbar != null){ + toolbar.setTitle(mItem.name); + } + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.item_detail_content, container, false); + + if (mItem != null) { + ((TextView) rootView.findViewById(R.id.item_detail_pokemon_id)).setText("Index: \t" + String.valueOf(mItem.index)); + ((TextView) rootView.findViewById(R.id.item_detail_pokemon_name)).setText("Name: \t" + mItem.name); + + if(mItem.bitmap != null){ + ((ImageView) rootView.findViewById(R.id.item_detail_pokemon_imageview)).setImageBitmap(mItem.bitmap); + }else{ + ((ImageView) rootView.findViewById(R.id.item_detail_pokemon_imageview)).setImageResource(R.drawable.default_pokemon); + } + } + + return rootView; + } +} \ No newline at end of file diff --git a/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemListActivity.java b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemListActivity.java new file mode 100644 index 0000000..f1b5791 --- /dev/null +++ b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/ItemListActivity.java @@ -0,0 +1,85 @@ +package com.sleepyjune.galleryapp; + +import android.content.res.AssetManager; +import android.graphics.BitmapFactory; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.RecyclerView; + +import android.view.View; +import com.sleepyjune.galleryapp.pokemon.Pokemon; +import com.sleepyjune.galleryapp.pokemon.PokemonList; + +import java.io.InputStream; +import org.simpleframework.xml.Serializer; +import org.simpleframework.xml.core.Persister; + + +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); + + DeserializeXMLData(); + LoadBitmaps(getAssets()); + + 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 DeserializeXMLData(){ + PokemonList pokemonList = null; + + try + { + InputStream inputStream = getAssets().open("PokemonData.xml"); + + Serializer serializer = new Persister(); + pokemonList = serializer.read(PokemonList.class, inputStream); + + PokemonList.InitializePokemonMap(pokemonList); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + private void LoadBitmaps(AssetManager assets){ + for(int i=0;i { + + 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) { + Pokemon pokemon = (Pokemon) view.getTag(); + if (mTwoPane) { + Bundle arguments = new Bundle(); + arguments.putInt(ItemDetailFragment.ARG_ITEM_ID, pokemon.index); + 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, pokemon.index); + + context.startActivity(intent); + } + } + }; + + public ItemListAdapter(ItemListActivity parent, + List items, + boolean twoPane) { + mValues = items; + mParentActivity = parent; + mTwoPane = twoPane; + } + + @Override + public ItemListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_list_content, parent, false); + return new ItemListAdapter.ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ItemListAdapter.ViewHolder holder, int position) { + Pokemon pokemon = mValues.get(position); + + holder.mIdView.setText(String.valueOf(pokemon.index)); + holder.mContentView.setText(pokemon.name); + + if(pokemon.bitmap != null){ + holder.mImageView.setImageBitmap(pokemon.bitmap); + }else{ + holder.mImageView.setImageResource(R.drawable.default_pokemon); + } + + 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; + final ImageView mImageView; + + ViewHolder(View view) { + super(view); + mIdView = (TextView) view.findViewById(R.id.id_text); + mContentView = (TextView) view.findViewById(R.id.content); + mImageView = (ImageView) view.findViewById(R.id.imageView); + } + } +} diff --git a/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/Pokemon.java b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/Pokemon.java new file mode 100644 index 0000000..13bcde0 --- /dev/null +++ b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/Pokemon.java @@ -0,0 +1,28 @@ +package com.sleepyjune.galleryapp.pokemon; + +import android.graphics.Bitmap; + +import org.simpleframework.xml.Root; +import org.simpleframework.xml.Element; + +@Root (name = "Pokemon") +public class Pokemon { + @Element + public String name; + @Element + public int index; + @Element + public String imgUrl; + + public Bitmap bitmap; + + public Pokemon(){ + + } + + public Pokemon(String name, int index, String imgUrl){ + this.name = name; + this.index = index; + this.imgUrl = imgUrl; + } +} diff --git a/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/PokemonList.java b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/PokemonList.java new file mode 100644 index 0000000..eebc807 --- /dev/null +++ b/Challenge 2/app/src/main/java/com/sleepyjune/galleryapp/pokemon/PokemonList.java @@ -0,0 +1,33 @@ +package com.sleepyjune.galleryapp.pokemon; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.simpleframework.xml.Root; +import org.simpleframework.xml.ElementList; + +@Root (name = "PokemonList") +public class PokemonList { + @ElementList (type = Pokemon.class) + public ArrayList list; + + public static List pokemons = new ArrayList(); + public static Map pokemonMap = new HashMap(); + + public PokemonList(){ + + } + + public static void InitializePokemonMap(PokemonList pokemonList){ + for(int i=0;i + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/drawable/default_pokemon.png b/Challenge 2/app/src/main/res/drawable/default_pokemon.png new file mode 100644 index 0000000..a72319b Binary files /dev/null and b/Challenge 2/app/src/main/res/drawable/default_pokemon.png differ diff --git a/Challenge 2/app/src/main/res/drawable/ic_launcher_background.xml b/Challenge 2/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/Challenge 2/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Challenge 2/app/src/main/res/layout-w900dp/item_list.xml b/Challenge 2/app/src/main/res/layout-w900dp/item_list.xml new file mode 100644 index 0000000..2d72ec5 --- /dev/null +++ b/Challenge 2/app/src/main/res/layout-w900dp/item_list.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/layout/activity_item_detail.xml b/Challenge 2/app/src/main/res/layout/activity_item_detail.xml new file mode 100644 index 0000000..ac407d3 --- /dev/null +++ b/Challenge 2/app/src/main/res/layout/activity_item_detail.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/layout/activity_item_list.xml b/Challenge 2/app/src/main/res/layout/activity_item_list.xml new file mode 100644 index 0000000..fea8f11 --- /dev/null +++ b/Challenge 2/app/src/main/res/layout/activity_item_list.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/layout/item_detail_content.xml b/Challenge 2/app/src/main/res/layout/item_detail_content.xml new file mode 100644 index 0000000..b97d21e --- /dev/null +++ b/Challenge 2/app/src/main/res/layout/item_detail_content.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/Challenge 2/app/src/main/res/layout/item_list.xml b/Challenge 2/app/src/main/res/layout/item_list.xml new file mode 100644 index 0000000..4565a5c --- /dev/null +++ b/Challenge 2/app/src/main/res/layout/item_list.xml @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/layout/item_list_content.xml b/Challenge 2/app/src/main/res/layout/item_list_content.xml new file mode 100644 index 0000000..c7462d5 --- /dev/null +++ b/Challenge 2/app/src/main/res/layout/item_list_content.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/Challenge 2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..a571e60 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..61da551 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..c41dd28 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..db5080a Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..6dba46d Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..da31a87 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..15ac681 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..b216f2d Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..f25a419 Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..e96783c Binary files /dev/null and b/Challenge 2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/Challenge 2/app/src/main/res/values/colors.xml b/Challenge 2/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..4faecfa --- /dev/null +++ b/Challenge 2/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #6200EE + #3700B3 + #03DAC5 + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/values/dimens.xml b/Challenge 2/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..e276ceb --- /dev/null +++ b/Challenge 2/app/src/main/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + 16dp + 200dp + 200dp + 16dp + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/values/strings.xml b/Challenge 2/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..a265e1d --- /dev/null +++ b/Challenge 2/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + GalleryApp + Item Detail + \ No newline at end of file diff --git a/Challenge 2/app/src/main/res/values/styles.xml b/Challenge 2/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..21d9ced --- /dev/null +++ b/Challenge 2/app/src/main/res/values/styles.xml @@ -0,0 +1,19 @@ + + + + + + +