最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android制作微信添加多個(gè)圖片放大圖片功能

 更新時(shí)間:2024年03月19日 09:46:17   作者:小舒卿雨  
這篇文章主要介紹了Android制作微信添加多個(gè)圖片放大圖片功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

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.編寫兩個(gè)item頁(yè)面為recycleview的子頁(yè)面

<?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"/>
//點(diǎn)擊添加按鈕
<?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);
           //點(diǎn)擊圖片 放大圖片,跳轉(zhuǎn)頁(yè)面
            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.編寫點(diǎn)擊圖片后放大圖片,創(chuàng)建emptyActivity頁(yè)面

<?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);
    }
}

到此這篇關(guān)于Android制作微信添加多個(gè)圖片,放大圖片的文章就介紹到這了,更多相關(guān)Android微信添加多個(gè)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android LinearLayout實(shí)現(xiàn)自動(dòng)換行

    Android LinearLayout實(shí)現(xiàn)自動(dòng)換行

    這篇文章主要為大家詳細(xì)介紹了Android LinearLayout實(shí)現(xiàn)自動(dòng)換行,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • android圖片處理之讓圖片變成圓形

    android圖片處理之讓圖片變成圓形

    如何讓圖片變成圓形,這篇文章主要為大家詳細(xì)介紹了android圖片處理中讓圖片變成圓形的方法,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android10填坑適配指南(實(shí)際經(jīng)驗(yàn)代碼)

    Android10填坑適配指南(實(shí)際經(jīng)驗(yàn)代碼)

    這篇文章主要介紹了Android10填坑適配指南(實(shí)際經(jīng)驗(yàn)代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Android使用ViewPager實(shí)現(xiàn)滾動(dòng)廣告

    Android使用ViewPager實(shí)現(xiàn)滾動(dòng)廣告

    這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實(shí)現(xiàn)滾動(dòng)廣告,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • AndroidStuio插件開發(fā)適用于jetbrains全家桶

    AndroidStuio插件開發(fā)適用于jetbrains全家桶

    這篇文章主要介紹了AndroidStuio插件開發(fā)適用于jetbrains全家桶,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Android簡(jiǎn)單實(shí)現(xiàn)文件下載

    Android簡(jiǎn)單實(shí)現(xiàn)文件下載

    這篇文章主要為大家詳細(xì)介紹了Android簡(jiǎn)單實(shí)現(xiàn)文件下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android SQLite操作之大數(shù)據(jù)處理與同時(shí)讀寫方法

    Android SQLite操作之大數(shù)據(jù)處理與同時(shí)讀寫方法

    這篇文章主要介紹了Android SQLite操作之大數(shù)據(jù)處理與同時(shí)讀寫方法,實(shí)例分析了Android操作SQLite時(shí)基于事務(wù)的數(shù)據(jù)緩存與批量插入技巧,以及同時(shí)讀寫的相關(guān)實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下
    2016-07-07
  • Android的支付密碼輸入框?qū)崿F(xiàn)淺析

    Android的支付密碼輸入框?qū)崿F(xiàn)淺析

    現(xiàn)在有很多的應(yīng)用都有支付密碼功能,而支付密碼的密碼輸入框確實(shí)一個(gè)很好玩的控件。雖然網(wǎng)上有很多例子,但是抽時(shí)間自己設(shè)計(jì)一個(gè)未嘗不可啊,下面來(lái)一起看看吧,有需要的朋友們可以參考學(xué)習(xí)。
    2016-09-09
  • Android 加密解密字符串詳解

    Android 加密解密字符串詳解

    本篇文章是對(duì)Android的加密解密字符串進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 詳解如何在Android中實(shí)現(xiàn)懸浮Activity

    詳解如何在Android中實(shí)現(xiàn)懸浮Activity

    本篇文章主要介紹詳解如何在Android中實(shí)現(xiàn)懸浮Activity,通過(guò)修改Activity的實(shí)現(xiàn)來(lái)適配平板設(shè)備,已達(dá)到代碼的最大利用率。有興趣的可以了解一下。
    2017-01-01

最新評(píng)論

四平市| 泸水县| 龙胜| 古交市| 德州市| 乐都县| 和平县| 库尔勒市| 安仁县| 防城港市| 遵义市| 永平县| 文山县| 宾川县| 防城港市| 宣威市| 礼泉县| 景泰县| 扎兰屯市| 始兴县| 闽清县| 中牟县| 蓬安县| 洮南市| 岐山县| 乡城县| 广州市| 巨鹿县| 鄯善县| 沂南县| 微博| 林周县| 长子县| 浠水县| 曲周县| 濮阳市| 佛坪县| 灌南县| 兴仁县| 教育| 财经|