从 Gallery/ImageButton 调用图像到 Canvas (DrawingView)

Call Image from Gallery/ImageButton to Canvas (DrawingView)

谁能帮我解决这个问题,如何调用gallery/imagebutton到canvas的图片进行绘图? 这是我的代码片段:

buah1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(getBaseContext(), BelajarMewarnai.class);
             startActivity(intent); 
        }   
    });

如果有人需要项目,我会将我的项目发送到电子邮件。

其实我想post评论中的link但是你似乎不太熟悉android(我是这么想的),所以我post 使用我的代码来做到这一点。首先选择单击哪个按钮您希望用户被引导到图库(仅默认图库而不是其他任何东西,如果您选择任何其他图片,您可能会得到一个空指针)。

在那个按钮上点击你这样做:

private void onClickOfButton(View v){

    Intent galleryIntent=new Intent();
    galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
    galleryIntent.setType("image/*");
    startActivityForResult(Intent.createChooser(galleryIntent, "pic-select"), 10);//(10 its just a request code, u can give ur own, but same should there at receiving end )
}

因为你已经启动了一个 activity 的结果,所以你应该等待启动 activity 的结果,这样 activity 会给你带来图像并在你的activity 你只需收集它并像这样将它放入你的图像视图中:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(requestCode==10 && resultCode==Activity.RESULT_OK){
            try{

                Uri selectImageUri=data.getData();
                String selectedImagePath=getPath(selectImageUri);
                Bitmap pic=BitmapFactory.decodeFile(selectedImagePath);
                if(pic!=null){
                    yourImageView.setImageBitmap(pic);

                }

            }catch(NullPointerException ex){
                Toast.makeText(getActivity().getBaseContext(), "Go to default gallery area and choose a pic", Toast.LENGTH_LONG).show();
            }

        }
        else
            super.onActivityResult(requestCode, resultCode, data);

}

getPath方法:

private String getPath(Uri uri) {
    if( uri == null ) {
        return null;
    }
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null);
    if( cursor != null ){
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    return uri.getPath();
}

所以这将完成你的工作...

试试这个:

 buah1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(getBaseContext(),     BelajarMewarnai.class);
            Bundle bundle = new Bundle();
//Get the image name you clicked on
            String imageName =     getResources().getResourceName(imageId);;
//Send the image name as a string, which you want      to load in the other activity
            bundle.putString("image_to_load", imageName.split("/")[1].toString());
            intent.putExtras(bundle);
            startActivity(intent); 
        }   
    });

然后你可以在下一个activity中的onCreate中得到你的图像名称,如下所示:

 //Here you can get the image name you already  clicked in the previous activity to load in your canvas
        Bundle bundle = getIntent().getExtras();
            if (bundle != null) {
                String image_name = bundle.getString("image_to_load")
        }

然后您可以像这样将图像名称设置为您的 imageView:

 //Here you can get all resources in res folder
     Resources res = getResources();
    //define a new string which takes the image name you get from extras in the above code
       String mDrawableName = image_name;
    //Now you have the image name you clicked in theprevious activity, and ResID is to get the resource id     from its name
        int resID = res.getIdentifier(mDrawableName, "drawable", getPackageName());
    //Here you can get the drawable from the   resourceID you obtained in the above line
       Drawable drawable = res.getDrawable(resID );
    YOUR_IMAGE is the ImageView of the canvas you   want to load the image inside in order to draw or    whatever you want to do
      drawView.setBackgroundDrawable(drawable);

希望对您有所帮助..