GalleryAdapter.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package epson.print;
  2. import android.content.Context;
  3. import android.content.res.TypedArray;
  4. import android.graphics.Bitmap;
  5. import android.graphics.Matrix;
  6. import android.media.ExifInterface;
  7. import android.util.DisplayMetrics;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.view.WindowManager;
  11. import android.widget.BaseAdapter;
  12. import android.widget.Gallery;
  13. import android.widget.ImageView;
  14. import java.io.IOException;
  15. import java.util.ArrayList;
  16. import epson.common.ImageUtil;
  17. import epson.print.Util.EPLog;
  18. import epson.print.Util.ImageFormatIdentifier;
  19. public class GalleryAdapter extends BaseAdapter {
  20. private final int gallerlyHeight = 96;
  21. private final int gallerlyWidth = 96;
  22. private ArrayList<String> imageList = new ArrayList<>();
  23. private Context mContext;
  24. private final float mDensity;
  25. private int mGalleryItemBackground;
  26. public long getItemId(int i) {
  27. return (long) i;
  28. }
  29. public GalleryAdapter(Context context, ArrayList<String> arrayList) {
  30. mContext = context;
  31. imageList = arrayList;
  32. TypedArray obtainStyledAttributes = context.obtainStyledAttributes(R.styleable.Gallery1);
  33. mGalleryItemBackground = obtainStyledAttributes.getResourceId(0, 0);
  34. mDensity = context.getResources().getDisplayMetrics().density;
  35. obtainStyledAttributes.recycle();
  36. }
  37. public void setImageList(ArrayList<String> arrayList) {
  38. imageList = arrayList;
  39. notifyDataSetChanged();
  40. }
  41. public void setAlignLeft(View view) {
  42. DisplayMetrics displayMetrics = new DisplayMetrics();
  43. ((WindowManager) mContext.getSystemService("window")).getDefaultDisplay().getMetrics(displayMetrics);
  44. ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
  45. marginLayoutParams.setMargins(-(displayMetrics.widthPixels / 2), marginLayoutParams.topMargin, marginLayoutParams.rightMargin, marginLayoutParams.bottomMargin);
  46. }
  47. public int getCount() {
  48. return imageList.size();
  49. }
  50. public Object getItem(int i) {
  51. return imageList.get(i);
  52. }
  53. public View getView(int i, View view, ViewGroup viewGroup) {
  54. ImageView imageView;
  55. if (view == null) {
  56. imageView = new ImageView(mContext);
  57. imageView.setScaleType(ImageView.ScaleType.CENTER);
  58. float f = mDensity;
  59. imageView.setLayoutParams(new Gallery.LayoutParams((f * 96.0f), (f * 96.0f)));
  60. imageView.setBackground(mContext.getResources().getDrawable(R.drawable.background_gallary));
  61. imageView.setAdjustViewBounds(true);
  62. imageView.setFocusable(true);
  63. imageView.setPadding(10, 10, 10, 10);
  64. } else {
  65. imageView = (ImageView) view;
  66. }
  67. if (i >= 0) {
  68. try {
  69. if (i < imageList.size()) {
  70. Bitmap createThumbnailBitmap = createThumbnailBitmap(imageList.get(i), 150);
  71. if (createThumbnailBitmap != null) {
  72. imageView.setImageBitmap(createThumbnailBitmap);
  73. } else {
  74. imageView.setImageResource(R.drawable.icon_android);
  75. }
  76. }
  77. } catch (NullPointerException e) {
  78. e.printStackTrace();
  79. imageView.setImageBitmap((Bitmap) null);
  80. } catch (IndexOutOfBoundsException unused) {
  81. EPLog.v("index out of bounds exception in set Bitmap", "ij");
  82. imageView.setImageBitmap((Bitmap) null);
  83. } catch (OutOfMemoryError e2) {
  84. EPLog.v("err exeption", "line 240 <> EPImageList");
  85. e2.printStackTrace();
  86. imageView.setImageResource(R.drawable.icon_android);
  87. }
  88. }
  89. return imageView;
  90. }
  91. @Nullable
  92. private Bitmap createThumbnailBitmap(@Nullable String str, int i) {
  93. if (str == null) {
  94. return null;
  95. }
  96. Bitmap loadBitmap = ImageUtil.loadBitmap(str, i, i, true, true);
  97. int jpegRotation = getJpegRotation(str);
  98. if (jpegRotation == 0) {
  99. return loadBitmap;
  100. }
  101. Matrix matrix = new Matrix();
  102. matrix.postRotate((float) jpegRotation);
  103. return Bitmap.createBitmap(loadBitmap, 0, 0, loadBitmap.getWidth(), loadBitmap.getHeight(), matrix, true);
  104. }
  105. private int getJpegRotation(@NonNull String str) {
  106. if (3 != ImageFormatIdentifier.identifyImageFormat(str)) {
  107. return 0;
  108. }
  109. try {
  110. int attributeInt = new ExifInterface(str).getAttributeInt(android.support.media.ExifInterface.TAG_ORIENTATION, 0);
  111. if (attributeInt == 3) {
  112. return EPImage.EPS_ROTATE_180;
  113. }
  114. if (attributeInt == 6) {
  115. return 90;
  116. }
  117. if (attributeInt != 8) {
  118. return 0;
  119. }
  120. return EPImage.EPS_ROTATE_270;
  121. } catch (IOException unused) {
  122. return 0;
  123. }
  124. }
  125. }