Android Whatsapp类图像选择并添加标题

Android Whatsapp类图像选择并添加标题,android,arraylist,imageview,whatsapp,Android,Arraylist,Imageview,Whatsapp,我想开发一个应用程序,用户可以从图库中选择多张照片,并可以像whatsapp一样添加标题,在多张图片中添加标题 任何人都可以在这方面帮助我。如果你想找这个, 你来对地方了, 以下是我帮助初学者的完整解决方案: 布局UI设计 <ImageView android:contentDescription="@string/app_name" android:id="@+id/currentStreamImage" android:layout_width="match_p

我想开发一个应用程序,用户可以从图库中选择多张照片,并可以像whatsapp一样添加标题,在多张图片中添加标题
任何人都可以在这方面帮助我。

如果你想找这个,

你来对地方了,
以下是我帮助初学者的完整解决方案:

布局UI设计

<ImageView
    android:contentDescription="@string/app_name"
    android:id="@+id/currentStreamImage"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"/>

<ImageView
    android:id="@+id/selected_photo"
    android:contentDescription="@string/app_name"
    android:background="@null"
    android:layout_margin="12dp"
    android:layout_alignParentEnd="true"
    android:src="@drawable/add_image_icon"
    android:layout_width="40dp"
    android:layout_height="40dp" />

<LinearLayout
    android:layout_alignParentBottom="true"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:padding="10dp"
        android:background="@drawable/fade_in_black"
        android:id="@+id/captionArea"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <EditText
        android:id="@+id/caption"
        android:hint="@string/enter_caption_here"
        android:textStyle="italic"
        android:textColor="@android:color/white"
        android:textColorHint="@android:color/white"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:src="@android:drawable/ic_menu_send" />

    </LinearLayout>


<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="100dp"/>

</LinearLayout>
项目布局

public class AddImageWithCaptionFragment extends Fragment implements ImageWithCaptionListener {

private ArrayList<ImgCap> imgCapArrayList = new ArrayList<>();
private PerfectAdapter adapter;
private RecyclerView recyclerView;
private ImageView select,mainStream;
private EditText captionEt;
private int mCurrentPosition;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.add_img_with_cap_layout, container, false);

    recyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);
    select = (ImageView) view.findViewById(R.id.selected_photo);
    mainStream = (ImageView) view.findViewById(R.id.currentStreamImage);
    captionEt = (EditText) view.findViewById(R.id.caption);

    select.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            TedBottomPicker bottomSheetDialogFragment = new TedBottomPicker.Builder(getActivity())
                    .setOnMultiImageSelectedListener(new TedBottomPicker.OnMultiImageSelectedListener() {
                        @Override
                        public void onImagesSelected(ArrayList<Uri> uriList) {

                            imgCapArrayList.clear();
                            for (int i=0;i<uriList.size();i++) {
                                ImgCap imgCap = new ImgCap(i,"", uriList.get(i));
                                imgCapArrayList.add(imgCap);
                            }

                            adapter = new PerfectAdapter(getActivity(),imgCapArrayList,mainStream,AddImageWithCaptionFragment.this);
                            LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
                            recyclerView.setLayoutManager(mLayoutManager);
                            recyclerView.setAdapter(adapter);
                        }
                    })
                    .setPeekHeight(1600)
                    .showTitle(false)
                    .setCompleteButtonText("Done")
                    .setEmptySelectionText("No Select")
                    .create();

            bottomSheetDialogFragment.show(getActivity().getSupportFragmentManager());

        }
    });

    captionEt.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            imgCapArrayList.get(mCurrentPosition).setCaption(s.toString());
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

    return view;
}

@Override
public void imgCaptionCallBack(int position) {
    mCurrentPosition = position;
    captionEt.setText(imgCapArrayList.get(mCurrentPosition).getCaption());
}
}
<RelativeLayout
    android:background="@android:color/white"
    android:padding="1dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<ImageView
    android:contentDescription="@string/app_name"
    android:id="@+id/image"
    android:scaleType="centerCrop"
    android:layout_width="100dp"
    android:layout_height="100dp" />

</RelativeLayout>

只是复制和粘贴,享受

你已经启动应用程序了吗?你被困在哪一部分?不,事实上我搜索了很多,但没有从网上得到任何东西。如果你正在寻找一个你需要的确切应用程序的指南,很可能你找不到。不过,我建议你先把你的发展计划分解成几个小部分,然后再逐个查找。虽然有点晚了,但还是要感谢你,至少我得到了答案
public interface ImageWithCaptionListener {

void imgCaptionCallBack(int position);

}
<RelativeLayout
    android:background="@android:color/white"
    android:padding="1dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<ImageView
    android:contentDescription="@string/app_name"
    android:id="@+id/image"
    android:scaleType="centerCrop"
    android:layout_width="100dp"
    android:layout_height="100dp" />

</RelativeLayout>
public class ImgCap {

private int position;
private String caption;
private Uri imagePath;

public ImgCap(int position, String caption, Uri imagePath) {
    this.position = position;
    this.caption = caption;
    this.imagePath = imagePath;
}

public int getPosition() {
    return position;
}

public String getCaption() {
    return caption;
}

public Uri getImagePath() {
    return imagePath;
}

public void setPosition(int position) {
    this.position = position;
}

public void setCaption(String caption) {
    this.caption = caption;
}

public void setImagePath(Uri imagePath) {
    this.imagePath = imagePath;
}
}