Коллаж камера android studio

Я реализую приложение, в котором я должен снимать и показывать их в collague посредством Imagesview.

Уже у меня есть в моем приложении способ снимать и я сохраняю ее в ImageView, только, который, в момент того, чтобы брать другую фотографию, удаляет предыдущая.

То, что я хочу сделать, состоит в том, чтобы снимать и помещать ее в один ImageView и если я беру другую фотографию, я сохраняю ее в другом ImageView и что смог отображать фотографии, взятые в различных ImageView; каждый из способа collague.

Это мой xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.arturosv.camara.MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
         />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hacer foto"
        android:id="@+id/button"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

Восток - мой main:

package com.example.arturosv.camara;

import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    Button btn;
    ImageView foto1,foto2;
    ImageButton t;
    static final int REQUEST_IMAGE_CAPTURE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);
        foto1 = (ImageView) findViewById(R.id.imageView);

        btn.setOnClickListener(new ImageView.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent();
            }
        });
    }

    private void intent() {

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            foto1.setImageBitmap(imageBitmap);
        }
    }

    private void intet() {

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }
}
1
задан 01.03.2017, 16:12
2 ответа

Ты должен определять все изображения хочешь, чтобы пользователь смог направлять, каждому ImageView, который у тебя есть в твоем layout, ты должен вручать ему идентификацию и по мере того, как он снял так камеры или выбрал Вашей галереи заменяешь и происходишь со следующей.

<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView1"
 />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
 />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView3"
 />

Activity

я не написал весь твой код, но я думаю, что того, который оставил тебя, достаточно, здесь то, что я делаю, состоит в том, чтобы создавать 3 изображения (они могут быть теми, которые ты хочешь), и потом верю в договоренность изображений так называемый коллаж. Я инициализирую каждое изображение с Вашим соответствующим элементом layout и потом элементы договоренности они seteo та, которая соответствует.

ImageView foto1,foto2, foto3;
ImageView[] collage= { foto1, foto2, foto3 };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button);
    foto1 = (ImageView) findViewById(R.id.imageView1);
    foto2 = (ImageView) findViewById(R.id.imageView2);
    foto3 = (ImageView) findViewById(R.id.imageView3);
    collage[0] = foto1;
    collage[1] = foto2;
    collage[2] = foto3;
}


@Override

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
         Bundle extras = data.getExtras();
         Bitmap imageBitmap = (Bitmap) extras.get("data");
         for (ImageView img : collage) {
            if(img.getDrawable()==null){
                img.setImageBitmap(imageBitmap);
                break;
            }
         }
     }
 }

Здесь я пробегаю договоренность изображений коллажа, спрашиваю, если у элемента iteraciГіn есть изображение, того, чтобы не быть таким, загружаю его та, которую я беру с камерой и отрезаю loop, чтобы так не наполнять остальные изображения.

1
ответ дан 24.11.2019, 13:08
  • 1
    @Samu JM - новый пользователь и оставила ошибка, которую он говорит, что он выходит у него, использовав код его ответа, но это оставила как ответ в этом вопросе, уже ориентировали его более или менее, но я верю в то, что puede комментировать, может быть, смогло бросать руку. Привет – Angel Angel 01.03.2017, 16:59
  • 2
    ошибка - следующая-> java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { act=inline-data flg=0x1 launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } (has extras) }} to activity {carlarsolutions.myapplication/carlarsolutions.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.widget.ImageView.getDrawable()' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThrea............. – Angel Angel 01.03.2017, 17:00
  • 3
    Хороший ошибка ссылается на объект null, если они могут оставлять больше có я говорю, что он мог бы помогать лучше – sioesi 01.03.2017, 17:24

Ты должен создавать список. Для этого используй RecyclerView. То, что происходит, состоит в том, что ты всегда показываешь ему, что изображение, которое ты берешь, они поместили себе ImageView, который у тебя есть, следовательно заменяется.

Ты можешь создавать класс, который назывались бы например Фотографии с признаком String path;

Потом, когда у тебя будет список, и ты будешь добавлять изображение, ты она сохраняешь в ArrayList, что ты посылаешь ему RecyclerView, но в этом случае ты создавал бы новый ввод и не sobreescribiendo imageView.

0
ответ дан 24.11.2019, 13:08