added save button to image preview
This commit is contained in:
parent
2df5ddad6c
commit
073a761309
|
@ -48,9 +48,10 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
|
||||
/// Media Types
|
||||
private static final int MEDIAVIEWER_NONE = 0;
|
||||
public static final int MEDIAVIEWER_IMAGE = 1;
|
||||
public static final int MEDIAVIEWER_VIDEO = 2;
|
||||
public static final int MEDIAVIEWER_ANGIF = 3;
|
||||
public static final int MEDIAVIEWER_IMG_S = 1;
|
||||
public static final int MEDIAVIEWER_IMAGE = 2;
|
||||
public static final int MEDIAVIEWER_VIDEO = 3;
|
||||
public static final int MEDIAVIEWER_ANGIF = 4;
|
||||
|
||||
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.GERMANY);
|
||||
private static final String[] REQ_WRITE_SD = {WRITE_EXTERNAL_STORAGE};
|
||||
|
@ -99,6 +100,8 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
|
||||
if (link != null && link.length > 0) {
|
||||
switch (type) {
|
||||
case MEDIAVIEWER_IMG_S:
|
||||
adapter.disableSaveButton();
|
||||
case MEDIAVIEWER_IMAGE:
|
||||
imageWindow.setVisibility(VISIBLE);
|
||||
imageList.setLayoutManager(new LinearLayoutManager(this, HORIZONTAL, false));
|
||||
|
@ -150,7 +153,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
|
||||
|
||||
@Override
|
||||
public void onImageTouch(Bitmap image) {
|
||||
public void onSaveClick(Bitmap image) {
|
||||
boolean accessGranted = true;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
int check = checkSelfPermission(WRITE_EXTERNAL_STORAGE);
|
||||
|
|
|
@ -38,7 +38,7 @@ import static android.view.Window.FEATURE_NO_TITLE;
|
|||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_LINK;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_TYPE;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMAGE;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMG_S;
|
||||
|
||||
|
||||
public class MessagePopup extends AppCompatActivity implements OnClickListener, OnDismissListener {
|
||||
|
@ -161,7 +161,7 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener,
|
|||
else {
|
||||
Intent image = new Intent(this, MediaViewer.class);
|
||||
image.putExtra(KEY_MEDIA_LINK, new String[]{mediaPath});
|
||||
image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMAGE);
|
||||
image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMG_S);
|
||||
startActivity(image);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -48,7 +48,7 @@ import static android.widget.Toast.LENGTH_LONG;
|
|||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_LINK;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_TYPE;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMAGE;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMG_S;
|
||||
import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_VIDEO;
|
||||
|
||||
|
||||
|
@ -267,7 +267,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo
|
|||
|
||||
case GIF:
|
||||
case IMAGE:
|
||||
image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMAGE);
|
||||
image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMG_S);
|
||||
startActivity(image);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package org.nuclearfog.twidda.adapter;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout.LayoutParams;
|
||||
import android.widget.ProgressBar;
|
||||
|
@ -12,11 +15,13 @@ import androidx.annotation.NonNull;
|
|||
import androidx.recyclerview.widget.RecyclerView.Adapter;
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.holder.ImageHolder;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static android.view.View.VISIBLE;
|
||||
import static android.widget.ListPopupWindow.MATCH_PARENT;
|
||||
import static android.widget.ListPopupWindow.WRAP_CONTENT;
|
||||
import static androidx.recyclerview.widget.RecyclerView.NO_POSITION;
|
||||
|
@ -30,13 +35,13 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
private OnImageClickListener itemClickListener;
|
||||
|
||||
private List<ImageHolder> images;
|
||||
private boolean loading;
|
||||
private boolean loading = false;
|
||||
private boolean saveImg = true;
|
||||
|
||||
|
||||
public ImageAdapter(OnImageClickListener itemClickListener) {
|
||||
this.itemClickListener = itemClickListener;
|
||||
images = new LinkedList<>();
|
||||
loading = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,6 +63,11 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
}
|
||||
|
||||
|
||||
public void disableSaveButton() {
|
||||
saveImg = false;
|
||||
}
|
||||
|
||||
|
||||
public boolean isEmpty() {
|
||||
return images.isEmpty();
|
||||
}
|
||||
|
@ -83,11 +93,9 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
|
||||
if (viewType == PICTURE) {
|
||||
ImageView preview = new ImageView(parent.getContext());
|
||||
preview.setBackgroundColor(0xffffffff);
|
||||
preview.setPadding(1, 1, 1, 1);
|
||||
final ImageItem item = new ImageItem(preview);
|
||||
preview.setOnClickListener(new View.OnClickListener() {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
|
||||
final ImageItem item = new ImageItem(view);
|
||||
item.preview.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int pos = item.getAdapterPosition();
|
||||
|
@ -97,17 +105,19 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
}
|
||||
}
|
||||
});
|
||||
preview.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
if (saveImg) {
|
||||
item.saveButton.setVisibility(VISIBLE);
|
||||
item.saveButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
public void onClick(View v) {
|
||||
int pos = item.getAdapterPosition();
|
||||
if (pos != NO_POSITION) {
|
||||
Bitmap img = images.get(pos).getOriginalImage();
|
||||
itemClickListener.onImageTouch(img);
|
||||
itemClickListener.onSaveClick(img);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
return item;
|
||||
} else {
|
||||
ProgressBar circle = new ProgressBar(parent.getContext());
|
||||
|
@ -132,10 +142,12 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
*/
|
||||
class ImageItem extends ViewHolder {
|
||||
final ImageView preview;
|
||||
final ImageButton saveButton;
|
||||
|
||||
ImageItem(ImageView preview) {
|
||||
super(preview);
|
||||
this.preview = preview;
|
||||
ImageItem(View view) {
|
||||
super(view);
|
||||
preview = view.findViewById(R.id.item_image_preview);
|
||||
saveButton = view.findViewById(R.id.item_image_save);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -165,6 +177,6 @@ public class ImageAdapter extends Adapter<ViewHolder> {
|
|||
*
|
||||
* @param image selected image_add bitmap
|
||||
*/
|
||||
void onImageTouch(Bitmap image);
|
||||
void onSaveClick(Bitmap image);
|
||||
}
|
||||
}
|
|
@ -1048,6 +1048,7 @@ public class TwitterEngine {
|
|||
* @return bitmap image
|
||||
* @throws EngineException if image loading failed
|
||||
*/
|
||||
@Nullable
|
||||
public Bitmap getImage(String link) throws EngineException {
|
||||
try {
|
||||
Proxy proxy;
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="16dp"
|
||||
android:height="16dp"
|
||||
android:viewportWidth="20"
|
||||
android:viewportHeight="20">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M15.173,2H4C2.899,2 2,2.9 2,4v12c0,1.1 0.899,2 2,2h12c1.101,0 2,-0.9 2,-2V5.127L15.173,2zM14,8c0,0.549 -0.45,1 -1,1H7C6.45,9 6,8.549 6,8V3h8V8zM13,4h-2v4h2V4z" />
|
||||
</vector>
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/item_image_margin"
|
||||
style="@style/CardViewStyle">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/item_image_preview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/image_preview" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/item_image_save"
|
||||
android:layout_width="@dimen/item_image_button"
|
||||
android:layout_height="@dimen/item_image_button"
|
||||
android:layout_gravity="top|end"
|
||||
android:layout_margin="@dimen/item_image_button_margin"
|
||||
android:background="@drawable/button"
|
||||
android:contentDescription="@string/item_image_save"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/save_img" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
|
@ -147,4 +147,6 @@
|
|||
<string name="error_file_not_found">Datei nicht gefunden!</string>
|
||||
<string name="item_load_more">Mehr laden</string>
|
||||
<string name="error_image_loading">Bild konnte nicht geladen werden!</string>
|
||||
<string name="item_image_prev">Bildvorschau</string>
|
||||
<string name="item_image_save">Bild speichern</string>
|
||||
</resources>
|
|
@ -67,4 +67,7 @@
|
|||
<dimen name="settings_appinfo_text_padding">5dp</dimen>
|
||||
<dimen name="settings_info_appname_font">18sp</dimen>
|
||||
<dimen name="item_placeholder_margin">8dp</dimen>
|
||||
<dimen name="item_image_button_margin">5dp</dimen>
|
||||
<dimen name="item_image_button">30dp</dimen>
|
||||
<dimen name="item_image_margin">2dp</dimen>
|
||||
</resources>
|
|
@ -150,4 +150,6 @@
|
|||
<string name="error_file_not_found">File not found!</string>
|
||||
<string name="item_load_more">Load more</string>
|
||||
<string name="error_image_loading">Could not load image!</string>
|
||||
<string name="item_image_prev">image preview</string>
|
||||
<string name="item_image_save">save image</string>
|
||||
</resources>
|
Loading…
Reference in New Issue