diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,15 @@ +*.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 +.cxx +local.properties diff --git a/src/app/.gitignore b/src/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/src/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/src/app/build.gradle b/src/app/build.gradle new file mode 100644 index 0000000..426cea8 --- /dev/null +++ b/src/app/build.gradle @@ -0,0 +1,46 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace 'com.example.myapplication' + compileSdk 34 + + defaultConfig { + applicationId "com.example.myapplication" + minSdk 31 + targetSdk 34 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation libs.appcompat + implementation libs.material + implementation libs.activity + implementation libs.constraintlayout + implementation libs.lifecycle.livedata.ktx + implementation libs.lifecycle.viewmodel.ktx + implementation libs.navigation.fragment + implementation libs.navigation.ui + testImplementation libs.junit + androidTestImplementation libs.ext.junit + androidTestImplementation libs.espresso.core +} \ No newline at end of file diff --git a/src/app/proguard-rules.pro b/src/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/src/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/src/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java b/src/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java new file mode 100644 index 0000000..982ba51 --- /dev/null +++ b/src/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.myapplication; + +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.example.myapplication", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/src/app/src/main/AndroidManifest.xml b/src/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..28e08e8 --- /dev/null +++ b/src/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/CustomAdapter.java b/src/app/src/main/java/com/example/myapplication/CustomAdapter.java new file mode 100644 index 0000000..f035081 --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/CustomAdapter.java @@ -0,0 +1,60 @@ +package com.example.myapplication; + + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +public class CustomAdapter extends RecyclerView.Adapter { + + private String[] localDataSet; + + + public static class ViewHolder extends RecyclerView.ViewHolder { + private final TextView textView; + + public ViewHolder(View view) { + super(view); + // Define click listener for the ViewHolder's View + + textView = (TextView) view.findViewById(R.id.textView); + } + + public TextView getTextView() { + return textView; + } + } + + + public CustomAdapter(String[] dataSet) { + localDataSet = dataSet; + } + + // Create new views (invoked by the layout manager) + @Override + public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { + // Create a new view, which defines the UI of the list item + View view = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.text_row_item, viewGroup, false); + + return new ViewHolder(view); + } + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(ViewHolder viewHolder, final int position) { + + // Get element from your dataset at this position and replace the + // contents of the view with that element + viewHolder.getTextView().setText(localDataSet[position]); + } + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return localDataSet.length; + } +} diff --git a/src/app/src/main/java/com/example/myapplication/MainActivity.java b/src/app/src/main/java/com/example/myapplication/MainActivity.java new file mode 100644 index 0000000..f3a8d19 --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/MainActivity.java @@ -0,0 +1,56 @@ +package com.example.myapplication; + +import android.content.Intent; +import android.graphics.Color; +import android.graphics.ColorMatrix; +import android.graphics.ColorMatrixColorFilter; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import android.widget.EditText; + +public class MainActivity extends AppCompatActivity { + + EditText emailEditText; + EditText passwordEditText; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_main); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + emailEditText = findViewById(R.id.editTextTextEmailAddress); + passwordEditText = findViewById(R.id.editTextTextPassword); + + ImageView imageView = findViewById(R.id.imageView); + ColorMatrix matrix = new ColorMatrix(); + matrix.setSaturation(0); // Set saturation to 0 to make the image monochrome + ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); + imageView.setColorFilter(filter); + } + + public void goToAnotherActivity(View view) { + String[] logins = getResources().getStringArray(R.array.passwords_array); + for (String login : logins) { + String[] parts = login.split("\\|"); + if (parts[0].equals(emailEditText.getText().toString()) && parts[1].equals(passwordEditText.getText().toString())) { + startActivity(new Intent(this, MainActivity2.class)); + } else { + emailEditText.setTextColor(Color.RED); + passwordEditText.setTextColor(Color.RED); + } + } + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/MainActivity2.java b/src/app/src/main/java/com/example/myapplication/MainActivity2.java new file mode 100644 index 0000000..544dc8b --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/MainActivity2.java @@ -0,0 +1,80 @@ +package com.example.myapplication; + +import android.os.Bundle; +import android.view.View; +import android.view.Menu; + +import com.google.android.material.snackbar.Snackbar; +import com.google.android.material.navigation.NavigationView; + +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import androidx.navigation.ui.AppBarConfiguration; +import androidx.navigation.ui.NavigationUI; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.appcompat.app.AppCompatActivity; + +import com.example.myapplication.databinding.ActivityMain2Binding; + +public class MainActivity2 extends AppCompatActivity { + + private AppBarConfiguration mAppBarConfiguration; + private ActivityMain2Binding binding; + private String CurrentCity = "Город ещё не выбран"; + + public String getCurrentCity() { + return CurrentCity; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + binding = ActivityMain2Binding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + setSupportActionBar(binding.appBarMain.toolbar); + binding.appBarMain.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) + .setAnchorView(R.id.fab).show(); + } + }); + DrawerLayout drawer = binding.drawerLayout; + NavigationView navigationView = binding.navView; + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + mAppBarConfiguration = new AppBarConfiguration.Builder( + R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow) + .setOpenableLayout(drawer) + .build(); + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); + NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration); + NavigationUI.setupWithNavController(navigationView, navController); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.main_activity2, menu); + return true; + } + + @Override + public boolean onSupportNavigateUp() { + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); + return NavigationUI.navigateUp(navController, mAppBarConfiguration) + || super.onSupportNavigateUp(); + } + + public void setCurrentCity(String city) { + CurrentCity = city; + NavController nc = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); + NavigationView nv = findViewById(R.id.nav_view); + Menu menu = nv.getMenu(); + NavigationUI.onNavDestinationSelected(menu.findItem(R.id.nav_gallery), nc); + } +} + diff --git a/src/app/src/main/java/com/example/myapplication/RecyclerItemClickListener.java b/src/app/src/main/java/com/example/myapplication/RecyclerItemClickListener.java new file mode 100644 index 0000000..c9048c7 --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/RecyclerItemClickListener.java @@ -0,0 +1,52 @@ +package com.example.myapplication; + +import android.content.Context; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { + private OnItemClickListener mListener; + + public interface OnItemClickListener { + public void onItemClick(View view, int position); + + public void onLongItemClick(View view, int position); + } + + GestureDetector mGestureDetector; + + public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) { + mListener = listener; + mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onSingleTapUp(MotionEvent e) { + return true; + } + + @Override + public void onLongPress(MotionEvent e) { + View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); + if (child != null && mListener != null) { + mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child)); + } + } + }); + } + + @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { + View childView = view.findChildViewUnder(e.getX(), e.getY()); + if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { + mListener.onItemClick(childView, view.getChildAdapterPosition(childView)); + return true; + } + return false; + } + + @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } + + @Override + public void onRequestDisallowInterceptTouchEvent (boolean disallowIntercept){} +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryFragment.java b/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryFragment.java new file mode 100644 index 0000000..06733f5 --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryFragment.java @@ -0,0 +1,52 @@ +package com.example.myapplication.ui.gallery; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.myapplication.MainActivity2; +import com.example.myapplication.R; +import com.example.myapplication.databinding.FragmentGalleryBinding; + +public class GalleryFragment extends Fragment { + + + private FragmentGalleryBinding binding; + private TextView currentCityView; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + GalleryViewModel galleryViewModel = + new ViewModelProvider(this).get(GalleryViewModel.class); + + binding = FragmentGalleryBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + // Initialize the TextView + currentCityView = root.findViewById(R.id.current_city); + + return root; + } + + @Override + public void onResume() { + super.onResume(); + // Update the TextView with the current recipe + if (getActivity() instanceof MainActivity2) { + String currentRecipe = ((MainActivity2) getActivity()).getCurrentCity(); + currentCityView.setText(currentRecipe); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryViewModel.java b/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryViewModel.java new file mode 100644 index 0000000..280556c --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/gallery/GalleryViewModel.java @@ -0,0 +1,19 @@ +package com.example.myapplication.ui.gallery; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class GalleryViewModel extends ViewModel { + + private final MutableLiveData mText; + + public GalleryViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is gallery fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/home/HomeFragment.java b/src/app/src/main/java/com/example/myapplication/ui/home/HomeFragment.java new file mode 100644 index 0000000..1319cf1 --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/home/HomeFragment.java @@ -0,0 +1,70 @@ +package com.example.myapplication.ui.home; + +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.NavController; +import androidx.navigation.fragment.NavHostFragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.myapplication.CustomAdapter; +import com.example.myapplication.MainActivity2; +import com.example.myapplication.R; +import com.example.myapplication.RecyclerItemClickListener; +import com.example.myapplication.databinding.FragmentHomeBinding; +import com.example.myapplication.ui.gallery.GalleryFragment; + +import java.io.Console; +import java.util.Arrays; +import java.util.logging.Logger; + +public class HomeFragment extends Fragment { + + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + HomeViewModel homeViewModel = + new ViewModelProvider(this).get(HomeViewModel.class); + + binding = FragmentHomeBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + + String[] city_list = getResources().getStringArray(R.array.city_list); + Arrays.sort(city_list); + RecyclerView recyclerView = root.findViewById(R.id.suslik); + recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(root.getContext(), recyclerView ,new RecyclerItemClickListener.OnItemClickListener() { + @Override public void onItemClick(View view, int position) { + Log.e("HomeFragment", "onClick: " + city_list[position]); + if (getActivity() instanceof MainActivity2) { + ((MainActivity2) getActivity()).setCurrentCity(city_list[position]); + } + } + + @Override + public void onLongItemClick(View view, int position) { + + } + })); + recyclerView.setLayoutManager(new LinearLayoutManager(root.getContext())); + CustomAdapter adapter = new CustomAdapter(city_list); + recyclerView.setAdapter(adapter); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/home/HomeViewModel.java b/src/app/src/main/java/com/example/myapplication/ui/home/HomeViewModel.java new file mode 100644 index 0000000..ea94cae --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package com.example.myapplication.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private final MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowFragment.java b/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowFragment.java new file mode 100644 index 0000000..232bfec --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowFragment.java @@ -0,0 +1,37 @@ +package com.example.myapplication.ui.slideshow; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.myapplication.databinding.FragmentSlideshowBinding; + +public class SlideshowFragment extends Fragment { + + private FragmentSlideshowBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + SlideshowViewModel slideshowViewModel = + new ViewModelProvider(this).get(SlideshowViewModel.class); + + binding = FragmentSlideshowBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.textSlideshow; + slideshowViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowViewModel.java b/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowViewModel.java new file mode 100644 index 0000000..ddf762d --- /dev/null +++ b/src/app/src/main/java/com/example/myapplication/ui/slideshow/SlideshowViewModel.java @@ -0,0 +1,19 @@ +package com.example.myapplication.ui.slideshow; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class SlideshowViewModel extends ViewModel { + + private final MutableLiveData mText; + + public SlideshowViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is slideshow fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/src/app/src/main/res/drawable/baseline_add_home_24.xml b/src/app/src/main/res/drawable/baseline_add_home_24.xml new file mode 100644 index 0000000..1d1402b --- /dev/null +++ b/src/app/src/main/res/drawable/baseline_add_home_24.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/app/src/main/res/drawable/baseline_favorite_24.xml b/src/app/src/main/res/drawable/baseline_favorite_24.xml new file mode 100644 index 0000000..badf5ea --- /dev/null +++ b/src/app/src/main/res/drawable/baseline_favorite_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/app/src/main/res/drawable/baseline_home_24.xml b/src/app/src/main/res/drawable/baseline_home_24.xml new file mode 100644 index 0000000..20cb4d6 --- /dev/null +++ b/src/app/src/main/res/drawable/baseline_home_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/app/src/main/res/drawable/ic_launcher_background.xml b/src/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/src/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/src/main/res/drawable/ic_launcher_foreground.xml b/src/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/src/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/drawable/ic_menu_camera.xml b/src/app/src/main/res/drawable/ic_menu_camera.xml new file mode 100644 index 0000000..634fe92 --- /dev/null +++ b/src/app/src/main/res/drawable/ic_menu_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/src/app/src/main/res/drawable/ic_menu_gallery.xml b/src/app/src/main/res/drawable/ic_menu_gallery.xml new file mode 100644 index 0000000..03c7709 --- /dev/null +++ b/src/app/src/main/res/drawable/ic_menu_gallery.xml @@ -0,0 +1,9 @@ + + + diff --git a/src/app/src/main/res/drawable/ic_menu_slideshow.xml b/src/app/src/main/res/drawable/ic_menu_slideshow.xml new file mode 100644 index 0000000..5e9e163 --- /dev/null +++ b/src/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/src/app/src/main/res/drawable/side_nav_bar.xml b/src/app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 0000000..6d81870 --- /dev/null +++ b/src/app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/src/app/src/main/res/drawable/stroke.xml b/src/app/src/main/res/drawable/stroke.xml new file mode 100644 index 0000000..d21e6a9 --- /dev/null +++ b/src/app/src/main/res/drawable/stroke.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/app/src/main/res/drawable/weather_logo.png b/src/app/src/main/res/drawable/weather_logo.png new file mode 100644 index 0000000..874cdf1 Binary files /dev/null and b/src/app/src/main/res/drawable/weather_logo.png differ diff --git a/src/app/src/main/res/layout-land/activity_main.xml b/src/app/src/main/res/layout-land/activity_main.xml new file mode 100644 index 0000000..ecb67cd --- /dev/null +++ b/src/app/src/main/res/layout-land/activity_main.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/activity_main.xml b/src/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..ecd77fa --- /dev/null +++ b/src/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/activity_main2.xml b/src/app/src/main/res/layout/activity_main2.xml new file mode 100644 index 0000000..6c7dd7c --- /dev/null +++ b/src/app/src/main/res/layout/activity_main2.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/app_bar_main.xml b/src/app/src/main/res/layout/app_bar_main.xml new file mode 100644 index 0000000..ce88139 --- /dev/null +++ b/src/app/src/main/res/layout/app_bar_main.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/content_main.xml b/src/app/src/main/res/layout/content_main.xml new file mode 100644 index 0000000..f8932c9 --- /dev/null +++ b/src/app/src/main/res/layout/content_main.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_gallery.xml b/src/app/src/main/res/layout/fragment_gallery.xml new file mode 100644 index 0000000..b37f67c --- /dev/null +++ b/src/app/src/main/res/layout/fragment_gallery.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_home.xml b/src/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000..a158847 --- /dev/null +++ b/src/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_slideshow.xml b/src/app/src/main/res/layout/fragment_slideshow.xml new file mode 100644 index 0000000..2141a33 --- /dev/null +++ b/src/app/src/main/res/layout/fragment_slideshow.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/nav_header_main.xml b/src/app/src/main/res/layout/nav_header_main.xml new file mode 100644 index 0000000..c145545 --- /dev/null +++ b/src/app/src/main/res/layout/nav_header_main.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/text_row_item.xml b/src/app/src/main/res/layout/text_row_item.xml new file mode 100644 index 0000000..36696e4 --- /dev/null +++ b/src/app/src/main/res/layout/text_row_item.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/menu/activity_main_drawer.xml b/src/app/src/main/res/menu/activity_main_drawer.xml new file mode 100644 index 0000000..ae47d11 --- /dev/null +++ b/src/app/src/main/res/menu/activity_main_drawer.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/menu/main_activity2.xml b/src/app/src/main/res/menu/main_activity2.xml new file mode 100644 index 0000000..412d5f8 --- /dev/null +++ b/src/app/src/main/res/menu/main_activity2.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/src/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/src/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/src/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/src/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/src/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/src/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/src/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/src/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/src/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/src/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/src/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/src/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/src/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/src/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/src/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/src/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/src/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/src/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/src/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/src/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/src/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/src/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/src/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/src/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/src/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/src/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/src/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/src/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/src/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/src/app/src/main/res/navigation/mobile_navigation.xml b/src/app/src/main/res/navigation/mobile_navigation.xml new file mode 100644 index 0000000..8c5e809 --- /dev/null +++ b/src/app/src/main/res/navigation/mobile_navigation.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/values-land/dimens.xml b/src/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/src/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/src/app/src/main/res/values-night/themes.xml b/src/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..d25b0f2 --- /dev/null +++ b/src/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/src/app/src/main/res/values-w1240dp/dimens.xml b/src/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..d73f4a3 --- /dev/null +++ b/src/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/src/app/src/main/res/values-w600dp/dimens.xml b/src/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/src/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/src/app/src/main/res/values/city_list.xml b/src/app/src/main/res/values/city_list.xml new file mode 100644 index 0000000..61bc775 --- /dev/null +++ b/src/app/src/main/res/values/city_list.xml @@ -0,0 +1,29 @@ + + + + Таганрог + Ростов-на-Дону + Москва + Санкт-Петербург + Краснодар + Красноярск + Владивосток + Сочи + Анапа + Крым + Севастополь + Симферополь + Ялта + Алушта + Феодосия + Керчь + Евпатория + Судак + Бахчисарай + Алупка + Балаклава + Коктебель + Мисхор + Новый Свет + + \ No newline at end of file diff --git a/src/app/src/main/res/values/colors.xml b/src/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/src/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/src/app/src/main/res/values/dimens.xml b/src/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..4ab4520 --- /dev/null +++ b/src/app/src/main/res/values/dimens.xml @@ -0,0 +1,8 @@ + + + 16dp + 16dp + 8dp + 176dp + 16dp + \ No newline at end of file diff --git a/src/app/src/main/res/values/passwords.xml b/src/app/src/main/res/values/passwords.xml new file mode 100644 index 0000000..7b5f1a7 --- /dev/null +++ b/src/app/src/main/res/values/passwords.xml @@ -0,0 +1,10 @@ + + + + kek@kek.ru|12345 + 123@kek.ru|54321 + 432@kek.ru|12345 + fgh@kek.ru|54321 + 83b@kek.ru|12345 + + \ No newline at end of file diff --git a/src/app/src/main/res/values/strings.xml b/src/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..d26178f --- /dev/null +++ b/src/app/src/main/res/values/strings.xml @@ -0,0 +1,17 @@ + + My Application + MainActivity2 + Open navigation drawer + Close navigation drawer + Всякая белиберда + от Серёги + Navigation header + Settings + + Home + Gallery + Slideshow + Войти + E-Mail + Password + \ No newline at end of file diff --git a/src/app/src/main/res/values/themes.xml b/src/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..992cd37 --- /dev/null +++ b/src/app/src/main/res/values/themes.xml @@ -0,0 +1,18 @@ + + + + + + +