当前位置: 代码网 > it编程>App开发>Android > Android制作微信添加多个图片放大图片功能

Android制作微信添加多个图片放大图片功能

2024年05月15日 Android 我要评论
1.添加依赖implementation 'com.github.bumptech.glide:glide:4.12.0' //裁剪图片等等implementation 'androidx.recyc

1.添加依赖

implementation 'com.github.bumptech.glide:glide:4.12.0' //裁剪图片等等
implementation 'androidx.recyclerview:recyclerview:1.1.0' //recycleview依赖

2.使用recycleview

    <androidx.recyclerview.widget.recyclerview
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

3.编写两个item页面为recycleview的子页面

<?xml version="1.0" encoding="utf-8"?>
<button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/btnadd"
    android:layout_width="100dp"
    android:layout_height="120dp"
    android:layout_margin="4dp"
    android:layout_weight="1"
    android:text="add"/>
//点击添加按钮
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="8dp">
    <imageview
        android:id="@+id/imgview"
        android:layout_width="100dp"
        android:layout_height="100dp"
       />
</linearlayout>

4.写recycleview的适配器

package com.example.myapplication;
import android.content.context;
import android.content.intent;
import android.net.uri;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.button;
import android.widget.imageview;
import androidx.annotation.nonnull;
import androidx.recyclerview.widget.recyclerview;
import com.bumptech.glide.glide;
import java.util.arraylist;
public class imageadapter extends recyclerview.adapter<recyclerview.viewholder> {
    private final int view_type_image = 0;
    private final int view_type_add_button = 1;
    private arraylist<uri> imageuris;
    private context context;
    private layoutinflater inflater;
    private onaddbuttonclicklistener addbuttonclicklistener;
    public interface onaddbuttonclicklistener {
        void onaddbuttonclick();
    }
    public imageadapter(context context, onaddbuttonclicklistener listener) {
        this.context = context;
        this.imageuris = new arraylist<>();
        this.inflater = layoutinflater.from(context);
        this.addbuttonclicklistener = listener;
    }
    public recyclerview.viewholder oncreateviewholder(@nonnull viewgroup parent, int viewtype) {
        if (viewtype == view_type_image) {
            view itemview = inflater.inflate(r.layout.iteam, parent, false);
            return new imageviewholder(itemview);
        } else {
            view itemview = inflater.inflate(r.layout.iteambutton, parent, false);
            button addbutton = itemview.findviewbyid(r.id.btnadd);
            addbutton.setonclicklistener(v -> addbuttonclicklistener.onaddbuttonclick());
            return new addbuttonviewholder(itemview);
        }
    }
    @override
    public void onbindviewholder(@nonnull recyclerview.viewholder holder, int position) {
        if (getitemviewtype(position) == view_type_image) {
            uri uri = imageuris.get(position);
            imageviewholder imageholder = (imageviewholder) holder;
            glide.with(context)
                    .load(uri)
                    .centercrop()
                    .into( imageholder.imageview);
           //点击图片 放大图片,跳转页面
            imageholder.imageview.setonclicklistener(new view.onclicklistener() {
                @override
                public void onclick(view v) {
                    intent intent=new intent(context,emptyactivity.class);
                    intent.putextra("url",uri.tostring());
                    context.startactivity(intent);
                }
            });
        }
    }
    @override
    public int getitemcount() {
        // plus one for the add button
        return imageuris.size() + 1
    }
    @override
    public int getitemviewtype(int position) {
        return position == imageuris.size() ? view_type_add_button : view_type_image;
    }
    public void addimage(uri uri) {
        imageuris.add(uri);
        notifyiteminserted(imageuris.size() - 1);
    }
    static class imageviewholder extends recyclerview.viewholder {
        imageview imageview;
        imageviewholder(view itemview) {
            super(itemview);
            imageview = itemview.findviewbyid(r.id.imgview);
        }
    }
    static class addbuttonviewholder extends recyclerview.viewholder {
        addbuttonviewholder(view itemview) {
            super(itemview);
        }
    }
}
 

5.编写java文件

package com.example.myapplication;
import android.content.intent;
import android.net.uri;
import android.os.bundle;
import android.provider.mediastore;
import androidx.annotation.nullable;
import androidx.appcompat.app.appcompatactivity;
import androidx.recyclerview.widget.gridlayoutmanager;
import androidx.recyclerview.widget.linearlayoutmanager;
import androidx.recyclerview.widget.recyclerview;
import java.util.arraylist;
public class recycleactivity extends appcompatactivity  implements imageadapter.onaddbuttonclicklistener{
    private static final int request_code_pick_image = 1;
    private imageadapter imageadapter;
    private recyclerview recyclerview;
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_recy_cle);
        recyclerview = findviewbyid(r.id.recyclerview);
        recyclerview.setlayoutmanager(new gridlayoutmanager(this,3));
        imageadapter = new imageadapter(this, this);
        recyclerview.setadapter(imageadapter);
    }
    @override
    public void onaddbuttonclick() {
        intent intent = new intent(intent.action_pick, mediastore.images.media.external_content_uri);
        startactivityforresult(intent, request_code_pick_image);
    }
    protected void onactivityresult(int requestcode, int resultcode, @nullable intent data) {
        super.onactivityresult(requestcode, resultcode, data);
        if (requestcode == request_code_pick_image && resultcode == result_ok) {
            if (data != null) {
                uri selectedimageuri = data.getdata();
                if (selectedimageuri != null) {
                    imageadapter.addimage(selectedimageuri);
                }
            }
        }
    }
}

6.编写点击图片后放大图片,创建emptyactivity页面

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    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:orientation="vertical">
    <imageview
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       android:layout_centerhorizontal="true"
        android:layout_centervertical="true"/>
</relativelayout>
package com.example.myapplication;
import androidx.appcompat.app.appcompatactivity;
import android.net.uri;
import android.os.bundle;
import android.widget.imageview;
import com.bumptech.glide.glide;
import javax.microedition.khronos.opengles.gl;
public class emptyactivity extends appcompatactivity {
    private imageview img;
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_empty);
        img=findviewbyid(r.id.img);
        string imageuristring = getintent().getstringextra("url");
        glide.with(emptyactivity.this)
                .load(imageuristring)
                .into(img);
    }
}

到此这篇关于android制作微信添加多个图片,放大图片的文章就介绍到这了,更多相关android微信添加多个图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com