diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser
index 6fe1fd9..66f54b5 100644
Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index 5be5893..bb15bf1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -34,4 +34,4 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.squareup.picasso:picasso:2.71828'
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java b/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java
index 5c111d5..69a63bb 100644
--- a/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java
+++ b/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java
@@ -1,6 +1,9 @@
package ru.volgorobot.vrcatalog.additional;
import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
@@ -9,6 +12,9 @@ import android.widget.ImageView;
import com.squareup.picasso.Picasso;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
public class ImagePagerAdapter extends PagerAdapter {
/**
* This class is designed to control the ViewPager (images of item) in the activity of viewing details of items.
@@ -57,4 +63,14 @@ public class ImagePagerAdapter extends PagerAdapter {
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
+
+ public Bitmap getBitmap(int position) {
+ Bitmap bitmap = null;
+ try {
+ bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(imageUris[position]));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return bitmap;
+ }
}
diff --git a/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java b/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java
index ab0629e..992e744 100644
--- a/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java
+++ b/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java
@@ -1,22 +1,24 @@
package ru.volgorobot.vrcatalog.view;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
-import android.text.method.LinkMovementMethod;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import ru.volgorobot.vrcatalog.ItemPresenter;
@@ -29,11 +31,14 @@ public class DetailActivity extends AppCompatActivity implements MainContract.It
private MainContract.ItemPresenter mPresenter;
private ViewPager viewPager;
private ListView propertiesList;
+ private ImagePagerAdapter imagePagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
+ Toolbar toolbar = findViewById(R.id.itemactivity_toolbar);
+ setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
@@ -135,11 +140,102 @@ public class DetailActivity extends AppCompatActivity implements MainContract.It
@Override
public void setViewPagerContent(String[] uris) {
- ImagePagerAdapter imagePagerAdapter = new ImagePagerAdapter(DetailActivity.this, uris);
+ imagePagerAdapter = new ImagePagerAdapter(DetailActivity.this, uris);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
viewPager.setAdapter(imagePagerAdapter);
+ setViewPagerScrollListener();
tabLayout.setupWithViewPager(viewPager);
imagePagerAdapter.notifyDataSetChanged();
}
+ private int getImageAverageColor(Bitmap bitmap) {
+ if (null == bitmap) return Color.TRANSPARENT;
+
+ int redBucket = 0;
+ int greenBucket = 0;
+ int blueBucket = 0;
+ int alphaBucket = 0;
+
+ boolean hasAlpha = bitmap.hasAlpha();
+ int pixelCount = bitmap.getWidth() * bitmap.getHeight();
+ int[] pixels = new int[pixelCount];
+ bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
+
+ for (int y = 0, h = bitmap.getHeight(); y < h; y++)
+ {
+ for (int x = 0, w = bitmap.getWidth(); x < w; x++)
+ {
+ int color = pixels[x + y * w]; // x + y * width
+ redBucket += (color >> 16) & 0xFF; // Color.red
+ greenBucket += (color >> 8) & 0xFF; // Color.greed
+ blueBucket += (color & 0xFF); // Color.blue
+ if (hasAlpha) alphaBucket += (color >>> 24); // Color.alpha
+ }
+ }
+
+ return Color.argb(
+ (hasAlpha) ? (alphaBucket / pixelCount) : 255,
+ redBucket / pixelCount,
+ greenBucket / pixelCount,
+ blueBucket / pixelCount);
+ }
+
+ private void setViewPagerScrollListener() {
+ ViewPager.OnPageChangeListener listener = new ViewPager.OnPageChangeListener() {
+ boolean firstImageProcessed = false;
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ if(position == 0 && !firstImageProcessed) {
+ viewPager.setBackgroundColor(getImageAverageColor(imagePagerAdapter.getBitmap(position)));
+ firstImageProcessed = true;
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ if(firstImageProcessed) {
+ viewPager.setBackgroundColor(getImageAverageColor(imagePagerAdapter.getBitmap(position)));
+ }
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ //
+ }
+ };
+ viewPager.setOnPageChangeListener(listener);
+ }
+
+ public static boolean setListViewHeightBasedOnItems(ListView listView) {
+
+ ListAdapter listAdapter = listView.getAdapter();
+ if (listAdapter != null) {
+
+ int numberOfItems = listAdapter.getCount();
+
+ // Get total height of all items.
+ int totalItemsHeight = 0;
+ for (int itemPos = 0; itemPos < numberOfItems; itemPos++) {
+ View item = listAdapter.getView(itemPos, null, listView);
+ item.measure(0, 0);
+ totalItemsHeight += item.getMeasuredHeight();
+ }
+
+ // Get total height of all item dividers.
+ int totalDividersHeight = listView.getDividerHeight() *
+ (numberOfItems - 1);
+
+ // Set list height.
+ ViewGroup.LayoutParams params = listView.getLayoutParams();
+ params.height = totalItemsHeight + totalDividersHeight;
+ listView.setLayoutParams(params);
+ listView.requestLayout();
+
+ return true;
+
+ } else {
+ return false;
+ }
+
+ }
}
diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml
index d7f98b3..b57713f 100644
--- a/app/src/main/res/layout/activity_detail.xml
+++ b/app/src/main/res/layout/activity_detail.xml
@@ -5,7 +5,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
-
@@ -27,7 +29,7 @@
-
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index a005d20..1e3a2a3 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -5,16 +5,13 @@
- true
- @android:color/transparent
-