Android制作微信添加多個圖片放大圖片功能
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); //點擊圖片 放大圖片,跳轉(zhuǎn)頁面 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.編寫點擊圖片后放大圖片,創(chuàng)建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); } }
到此這篇關(guān)于Android制作微信添加多個圖片,放大圖片的文章就介紹到這了,更多相關(guān)Android微信添加多個圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android對話框AlertDialog與DatePickerDialog及TimePickerDialog使用詳解
這篇文章主要介紹了Android對話框中的提醒對話框AlertDialog、日期對話框DatePickerDialog、時間對話框TimePickerDialog使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09Android編程之PopupWindow隱藏及顯示方法示例(showAtLocation,showAsDropDown
這篇文章主要介紹了Android編程之PopupWindow隱藏及顯示方法,結(jié)合實例形式分析了showAtLocation及showAsDropDown方法實現(xiàn)PopupWindow控件隱藏及顯示功能相關(guān)操作技巧,需要的朋友可以參考下2017-02-02Android利用WindowManager實現(xiàn)懸浮窗
這篇文章主要為大家詳細(xì)介紹了Android利用WindowManager實現(xiàn)懸浮窗效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android應(yīng)用借助LinearLayout實現(xiàn)垂直水平居中布局
這篇文章主要介紹了Android應(yīng)用借助LinearLayout實現(xiàn)垂直水平居中布局的方法,文中列舉了LinearLayout線性布局下居中相關(guān)的幾個重要參數(shù),需要的朋友可以參考下2016-04-04Android Studio不能獲取遠(yuǎn)程依賴包的完美解決方法
這篇文章主要介紹了Android Studio不能獲取遠(yuǎn)程依賴包的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11Android GridView實現(xiàn)動畫效果實現(xiàn)代碼
這篇文章主要介紹了 Android GridView實現(xiàn)動畫效果實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03Compose自定義View實現(xiàn)繪制Rainbow運動三環(huán)效果
這篇文章主要為大家介紹了一個基于Compose自定義的一個Rainbow彩虹運動三環(huán),業(yè)務(wù)上類似于iWatch上的那個運動三環(huán),感興趣的小伙伴可以了解一下2023-02-02