android - RecyclerView onBindviewholder Dialog clicklistner Animation

标签 android android-layout android-fragments android-recyclerview

我已经创建了一个 recyclerView,其中有一个 recycleview onBindView Holder 方法我想在那里设置一个对话框(自定义对话框)在每个 recyclerview 行中都有一个图像,当我点击 recyclerview 的图像时,一个对话框会从底部出现相同的图像,当我点击任何地方时,对话框应该会下降.

注:recylerview中的数据来自volley库

最佳答案

首先您必须创建一个自定义对话框。

dialog_image.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@color/white"
    android:layout_width="260dp"
    android:layout_height="270dp">

    <ImageView
        android:id="@+id/dialog_iv"
        android:layout_width="260dp"
        android:layout_height="260dp"
        />

</LinearLayout>

适配器类的 OnbindViewHolder() 中:

 holder.medPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                final Dialog dialogi = new Dialog(context);
                dialogi.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialogi.setCancelable(true);
                dialogi.setContentView(R.layout.dialog_image);
               // dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));


                ImageView dialogIv = (ImageView)dialogi.findViewById(R.id.dialog_iv);


                Picasso.with(context)
                        .load(data.get(position).getMedicine_img_url().replace(" ","%20").trim())
                        .into(dialogIv);
                dialogi.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation_2; //style id
                dialogi.show(); 

                dialogIv.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        dialogi.dismiss();
                    }
                });


            }
        });
    }

Style.xml中放入这段代码:

 <style name="DialogAnimation_2">
    <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item>
    <item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>

res 中创建一个文件夹 anim 并在 anim 文件夹中放两个动画 res 文件:

slide_up_dialog :

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromYDelta="100%"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0">
</translate>

slide_out_down :

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromYDelta="0%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toYDelta="100%p">
</translate>

关于android - RecyclerView onBindviewholder Dialog clicklistner Animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46048195/

相关文章:

python - 如何通过 Docker 使用 Buildozer 构建 .aab?

java - Android 中的图像切换问题

android - 如何在Kotlin扩展功能中使用泛型

android - 使用 MPAndroidChart 库时 width and height must be > 0 错误

android - 在 Fragment 中使用 volley 从 JSON 中获取数据

android - v4 支持库是否在可用时使用新类?

android - Xamarin 和 Travis-ci

android - 如何创建自定义环形可绘制 android

java - 如何正确地将图像放置在具有指定高度的 ImageView 的顶部?

java - Bottom Sheet Fragment 在第二次调用时导致错误