diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index a915058..6fe1fd9 100644 Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ diff --git a/app/src/main/java/ru/volgorobot/vrcatalog/ItemPresenter.java b/app/src/main/java/ru/volgorobot/vrcatalog/ItemPresenter.java index 876fd96..6ee3662 100644 --- a/app/src/main/java/ru/volgorobot/vrcatalog/ItemPresenter.java +++ b/app/src/main/java/ru/volgorobot/vrcatalog/ItemPresenter.java @@ -6,11 +6,14 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.AsyncTask; -import android.provider.MediaStore; import android.util.Base64; -import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.ArrayList; +import java.util.UUID; import ru.volgorobot.vrcatalog.additional.NetworkErrorException; import ru.volgorobot.vrcatalog.additional.ResultWithErrorCode; @@ -60,8 +63,8 @@ public class ItemPresenter implements MainContract.ItemPresenter { byte[] imageStream = Base64.decode(imageItem.getImage(), Base64.DEFAULT); bitmaps.add(BitmapFactory.decodeByteArray(imageStream, 0, imageStream.length)); } - for (Bitmap bitmap : bitmaps) { - uriStrings.add(processImages(bitmap).toString()); + for (int i = 0; i < bitmaps.size(); i++) { + uriStrings.add(processImages(bitmaps.get(i)).toString()); } String[] uriStringsArray = new String[uriStrings.size()]; uriStrings.toArray(uriStringsArray); @@ -86,9 +89,18 @@ public class ItemPresenter implements MainContract.ItemPresenter { } private Uri processImages(Bitmap bitmap) { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); - String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, "Title", null); - return Uri.parse(path); + File cacheDir = context.getCacheDir(); + File cacheObject = new File(cacheDir, UUID.randomUUID().toString()); + try { + FileOutputStream fileOutputStream = new FileOutputStream(cacheObject); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream); + fileOutputStream.flush(); + fileOutputStream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return Uri.fromFile(cacheObject); } } 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 fcefada..5c111d5 100644 --- a/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java +++ b/app/src/main/java/ru/volgorobot/vrcatalog/additional/ImagePagerAdapter.java @@ -41,9 +41,11 @@ public class ImagePagerAdapter extends PagerAdapter { @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { ImageView imageView = new ImageView(context); + ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(313, 313); + imageView.setLayoutParams(params); Picasso.get() .load(imageUris[position]) - .fit() + .resize(0, 313) .centerCrop() .into(imageView); container.addView(imageView); 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 bf9d6e8..f0f8814 100644 --- a/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java +++ b/app/src/main/java/ru/volgorobot/vrcatalog/view/DetailActivity.java @@ -7,27 +7,27 @@ import android.support.v7.app.AppCompatActivity; import android.text.method.LinkMovementMethod; 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; import ru.volgorobot.vrcatalog.MainContract; import ru.volgorobot.vrcatalog.R; import ru.volgorobot.vrcatalog.additional.ImagePagerAdapter; +import ru.volgorobot.vrcatalog.additional.PropertiesListAdapter; public class DetailActivity extends AppCompatActivity implements MainContract.ItemView { - TextView nameView; - TextView quantityView; - TextView priceView; - TextView countryView; - TextView analogueView; - TextView datasheetView; - EditText notesView; private MainContract.ItemPresenter mPresenter; private ViewPager viewPager; + private ListView propertiesList; @Override protected void onCreate(Bundle savedInstanceState) { @@ -39,66 +39,53 @@ public class DetailActivity extends AppCompatActivity implements MainContract.It mPresenter = new ItemPresenter(DetailActivity.this, this); Intent intent = getIntent(); - HashMap extrasMap = getIntentExtras(intent); + ((TextView) findViewById(R.id.itemName)).setText(intent.getStringExtra("detailName")); + String tmp = intent.getStringExtra("detailPrice"); + if(tmp.equals("0")) { + tmp = "Уточните у продавца"; + } + ((TextView) findViewById(R.id.itemPrice)).setText(tmp); - nameView.setText(extrasMap.get("detailName")); - quantityView.setText(extrasMap.get("detailQuantity")); - priceView.setText(extrasMap.get("detailPrice")); - countryView.setText(extrasMap.get("detailCountry")); - analogueView.setText(extrasMap.get("detailAnalogue")); - datasheetView.setText(extrasMap.get("detailDatasheet")); - notesView.setText(extrasMap.get("detailNotes")); - mPresenter.getImagesByItemID(Integer.parseInt(extrasMap.get("itemID"))); + LinkedHashMap extrasMap = getIntentExtras(intent); + + propertiesList = findViewById(R.id.propertiesList); + PropertiesListAdapter propertiesListAdapter = new PropertiesListAdapter(extrasMap); + propertiesList.setAdapter(propertiesListAdapter); + + mPresenter.getImagesByItemID(Integer.parseInt(intent.getStringExtra("itemID"))); } void initializeViews() { - nameView = findViewById(R.id.name); - quantityView = findViewById(R.id.quantity); - priceView = findViewById(R.id.price); - notesView = findViewById(R.id.notes); - countryView = findViewById(R.id.country); - analogueView = findViewById(R.id.analogue); - datasheetView = findViewById(R.id.datasheet); - datasheetView.setMovementMethod(LinkMovementMethod.getInstance()); viewPager = findViewById(R.id.viewPager); } - HashMap getIntentExtras(Intent intent) { - HashMap hashMap = new HashMap<>(); + LinkedHashMap getIntentExtras(Intent intent) { + LinkedHashMap hashMap = new LinkedHashMap<>(); String tmp; - tmp = intent.getStringExtra("detailName"); - hashMap.put("detailName", tmp); - tmp = intent.getStringExtra("detailQuantity"); if(tmp.equals("0")) { tmp = "Под заказ"; } - hashMap.put("detailQuantity", tmp); - - tmp = intent.getStringExtra("detailPrice"); - if(tmp.equals("0")) { - tmp = "Уточните у продавца"; - } - hashMap.put("detailPrice", tmp); + hashMap.put("Количество", tmp); tmp = intent.getStringExtra("detailCountry"); if(tmp.equals("")) { tmp = "Не указано"; } - hashMap.put("detailCountry", tmp); + hashMap.put("Страна изготовления", tmp); tmp = intent.getStringExtra("detailAnalogue"); if(tmp.equals("")) { tmp = "Нет аналогов"; } - hashMap.put("detailAnalogue", tmp); + hashMap.put("Аналоги", tmp); tmp = intent.getStringExtra("detailDatasheet"); if(!tmp.matches("\\S")) { tmp = "Не указано"; } - hashMap.put("detailDatasheet", tmp); + hashMap.put("Техническая спецификация", tmp); tmp = intent.getStringExtra("detailNotes"); if(tmp != null && tmp.equals("")) { @@ -106,7 +93,7 @@ public class DetailActivity extends AppCompatActivity implements MainContract.It } else if (tmp == null){ tmp = "Нет описания"; } - hashMap.put("detailNotes", tmp); + hashMap.put("Описание", tmp); return hashMap; } @@ -148,4 +135,5 @@ public class DetailActivity extends AppCompatActivity implements MainContract.It viewPager.setAdapter(imagePagerAdapter); imagePagerAdapter.notifyDataSetChanged(); } + } diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml index e4adc21..2fedf75 100644 --- a/app/src/main/res/layout/activity_detail.xml +++ b/app/src/main/res/layout/activity_detail.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" android:orientation="vertical"> - - + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 47d59f1..ab22a0a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.3.1' // NOTE: Do not place your application dependencies here; they belong