如何在类中显示图片,我将其保存在另一个类中

时间:2014-11-17 00:23:15

标签: java android eclipse image

我有一个应用程序,您可以在其中制作和保存图片。现在我把这张照片显示在另一个班级。我刚开始用java编程,不知道怎么做。

FotoMaker.java:

package com.example.random;

import java.io.FileNotFoundException;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.net.Uri;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class FotoMaker extends Activity 
    { 
    ImageView iv;
    Uri uriOfPicture;


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
        { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addpictolist);

        iv = (ImageView) findViewById(R.id.imageView);
        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener()
        { 


            @Override 
            public void onClick (View v){
                takeImageFromCamera();

            } 
        }); 
        } 
        @Override 
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        { 
            if(requestCode == 0)
            { 
                Bitmap image=createBitmapFromURI(uriOfPicture);
                iv.setImageBitmap(image);
            } 
        } 
@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (uriOfPicture != null) {
            outState.putString("cameraImageUri", uriOfPicture.toString());
        }
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState.containsKey("cameraImageUri")) {
            uriOfPicture = Uri.parse(savedInstanceState.getString("cameraImageUri"));
        }
    }
public void takeImageFromCamera(){
        String fileName = "new-photo-name.jpg";
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION,
                "Image captured by camera");

        uriOfPicture = getContentResolver()
                .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        values);  
        Log.i("uri",uriOfPicture.toString());
        Intent intent = new Intent(
                MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uriOfPicture);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
        startActivityForResult(intent,
                0);


    }

public Bitmap createBitmapFromURI(Uri uri) {

        Bitmap bitmap = null;
        try {
            bitmap = BitmapFactory.decodeStream(getApplicationContext()
                    .getContentResolver().openInputStream(uri));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        if (bitmap != null)
            return Bitmap.createScaledBitmap(bitmap, 100, 100, true);
        else {
            return null;
        }
    }


    }

ShowPhoto.java:

package com.example.random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class ShowPhoto extends Activity{

    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.watch_pic);

        iv = (ImageView) findViewById(R.id.imageView1);

        }
}

1 个答案:

答案 0 :(得分:1)

您可以在拥有URI后将URI传递给新活动。因此,在您的FotoMaker的onActivityResult中,只需启动ShowPhoto活动并额外发送uriOfPicture。

Intent intent = new Intent(this, ShowPhoto.class);
intent.putExtra("uri", uriOfPicture);
startActivity(intent);

在ShowPhoto活动中,只需捕获参数并显示它:

String uriOfPicture = getIntent().getStringExtra("uri");
Bitmap image = createBitmapFromURI(uriOfPicture);
iv.setImageBitmap(image);

我假设您的大部分代码都已有效。