public class MainActivity extends AppCompatActivity implements ThumbnailCallback {
static {
System.loadLibrary("NativeImageProcessor");
}
private Activity activity;
private RecyclerView thumbrecyclerView;
private ImageView placeHolderImageView;
String ss;
Bitmap thumbImage;;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ss = getIntent().getStringExtra("image");
activity = this;
initUIWidgets();
}
private void initUIWidgets() {
thumbrecyclerView = findViewById(R.id.thumbnails);
placeHolderImageView = findViewById(R.id.place_holder_imageview);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(ss));
placeHolderImageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
initHorizontalList();
}
private void initHorizontalList() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
layoutManager.scrollToPosition(0);
thumbrecyclerView.setLayoutManager(layoutManager);
thumbrecyclerView.setHasFixedSize(true);
bindDataToAdapter();
}
private void bindDataToAdapter() {
final Context context = this.getApplication();
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
thumbImage = null;
try {
thumbImage = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(ss));
} catch (IOException e) {
e.printStackTrace();
}
ThumbnailItem t1 = new ThumbnailItem();
ThumbnailItem t2 = new ThumbnailItem();
ThumbnailItem t3 = new ThumbnailItem();
ThumbnailItem t4 = new ThumbnailItem();
ThumbnailItem t5 = new ThumbnailItem();
ThumbnailItem t6 = new ThumbnailItem();
t1.image = thumbImage;
t2.image = thumbImage;
t3.image = thumbImage;
t4.image = thumbImage;
t5.image = thumbImage;
t6.image = thumbImage;
ThumbnailsManager.clearThumbs();
ThumbnailsManager.addThumb(t1); // Original Image
t2.filter = SampleFilters.getStarLitFilter();
ThumbnailsManager.addThumb(t2);
t3.filter = SampleFilters.getBlueMessFilter();
ThumbnailsManager.addThumb(t3);
t4.filter = SampleFilters.getAweStruckVibeFilter();
ThumbnailsManager.addThumb(t4);
t5.filter = SampleFilters.getLimeStutterFilter();
ThumbnailsManager.addThumb(t5);
t6.filter = SampleFilters.getNightWhisperFilter();
ThumbnailsManager.addThumb(t6);
List<ThumbnailItem> thumbs = ThumbnailsManager.processThumbs(context);
ThumbnailsAdapter adapter = new ThumbnailsAdapter(thumbs, (ThumbnailCallback) activity);
thumbrecyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
};
handler.post(r);
}
@Override
public void onThumbnailClick(Filter filter) {
placeHolderImageView.setImageBitmap(filter.processFilter(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(this.getApplicationContext().getResources(), R.drawable.photo), 640, 640, false)));
}
}
//// Adapter class
public class ThumbnailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = "THUMBNAILS_ADAPTER";
private static int lastPosition = -1;
private ThumbnailCallback thumbnailCallback;
private List<ThumbnailItem> dataSet;
public ThumbnailsAdapter(List<ThumbnailItem> dataSet, ThumbnailCallback thumbnailCallback) {
Log.v(TAG, "Thumbnails Adapter has " + dataSet.size() + " items");
this.dataSet = dataSet;
this.thumbnailCallback = thumbnailCallback;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
Log.v(TAG, "On Create View Holder Called");
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.list_thumbnail_item, viewGroup, false);
return new ThumbnailsViewHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int i) {
final ThumbnailItem thumbnailItem = dataSet.get(i);
Log.v(TAG, "On Bind View Called");
ThumbnailsViewHolder thumbnailsViewHolder = (ThumbnailsViewHolder) holder;
thumbnailsViewHolder.thumbnail.setImageBitmap(thumbnailItem.image);
thumbnailsViewHolder.thumbnail.setScaleType(ImageView.ScaleType.FIT_START);
setAnimation(thumbnailsViewHolder.thumbnail, i);
thumbnailsViewHolder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (lastPosition != i) {
thumbnailCallback.onThumbnailClick(thumbnailItem.filter);
lastPosition = i;
}
}
});
}
private void setAnimation(View viewToAnimate, int position) {
{
//ViewHelper.setAlpha(viewToAnimate, .0f);
//com.nineoldandroids.view.ViewPropertyAnimator.animate(viewToAnimate).alpha(1).setDuration(250).start();
lastPosition = position;
}
}
@Override
public int getItemCount() {
return dataSet.size();
}
public static class ThumbnailsViewHolder extends RecyclerView.ViewHolder {
public ImageView thumbnail;
public ThumbnailsViewHolder(View v) {
super(v);
this.thumbnail = v.findViewById(R.id.thumbnail);
}
}
}
我正在github https://github.com/Zomato/AndroidPhotoFilters上使用zomato库。当我在应用程序中实现该库时,它可以正常工作,但问题是,当我单击缩略图(过滤器图像在快照中看到)时,它崩溃并且不对图像应用过滤器(从过滤器图像上方查看大图像)在imageview中,我已从图库中加载,我想在加载的图像上应用缩略图(过滤器图像)。您可以在上面的链接上查看完整的库,但是onthumbnailClick方法中出现了问题。.有人可以帮助我吗...谢谢
@Override
public void onThumbnailClick(Filter filter) {
image_view = findViewById(R.id.place_holder_ImageView);
Bitmap abc = filter.processFilter(testbitmap);
image_view.setImageBitmap(abc);
}
//错误是
10-20 15:05:06.757 10261-10261/com.example.muhammadmehran.framedemo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.muhammadmehran.framedemo, PID: 10261
java.lang.NumberFormatException: Invalid int: "content://media/external/images/media/26568"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parse(Integer.java:410)
at java.lang.Integer.parseInt(Integer.java:367)
at java.lang.Integer.parseInt(Integer.java:334)
at com.example.muhammadmehran.framedemo.MainActivity.onThumbnailClick(MainActivity.java:128)
at com.example.muhammadmehran.framedemo.ThumbnailsAdapter$1.onClick(ThumbnailsAdapter.java:49)
at android.view.View.performClick(View.java:5205)
at android.view.View$PerformClick.run(View.java:21162)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5452)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
//快照是