在android中选择gridview将一个图像从一个活动移动到另一个活动 [英] move one image from one activity to another activity in android on selecting gridview

查看:227
本文介绍了在android中选择gridview将一个图像从一个活动移动到另一个活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个网格视图,其中包含图像,当点击一个图像时,它应该在另一个页面中打开。我需要将图像从一个活动传递到另一个想要获取图像像素的位置。代码来获取像素。我需要的是,我必须在其他活动中显示图像,以便获取pixels.how将所选图像从一个活动传递给另一个android .i已经尝试了一些来自堆栈的解决方案溢出,但没有奏效

// GridviewActivity.java


package gr .ed.vi;



  import android.app.Activity; 
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.View;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;

public class GridviewActivity extends Activity
{
// ---要显示的图像---
Integer [] imageIDs = {
。 drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
。 drawable.ic_launcher,
R.drawable.ic_launcher
};

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

GridView gridView =(GridView)findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));

gridView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView parent,
View v,int position,long id)
{
/ * Toast.makeText(getBaseContext(),
pic+(position + 1)+selected,
Toast.LENGTH_SHORT).show(); * /
switch(position){
case 0:

break;
case 1:
//调用第二类
Intent intent = new Intent(GridviewActivity .this,sm.class);

// intent.putExtra(photo,imageIDs);
// Log.d(TAG,jpegCallback1+ data);
startActivity(intent);

// intent.putExtra(img,imageIDs);
// startActivity(intent);

break;
情况2:
//叫三等
意图k1 =新意图(GridviewActivity.this,sm.class);
startActivity(k1);
休息;

默认值:
break;
}
}
});
}

public class ImageAdapter extends BaseAdapter
{
private context context;

public ImageAdapter(Context c)
{
context = c;
}

// ---返回图片的数量---
public int getCount(){
return imageIDs.length;
}

// ---返回一个项目的ID ---
public Object getItem(int position){
return position;
}

public long getItemId(int position){
return position;
}

// ---返回一个ImageView视图---
public View getView(int position,View convertView,ViewGroup parent)
{
ImageView imageView;
if(convertView == null){
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5,5,5,5);
} else {
imageView =(ImageView)convertView;
}
imageView.setImageResource(imageIDs [position]);
返回imageView;
}
}
}

sm.java

  package gr.ed.vi; 

导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.BlurMaskFilter;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.graphics.PorterDuffXfermode;
导入android.graphics.Rect;
导入android.graphics.AvoidXfermode.Mode;
导入android.graphics.Bitmap.Config;
导入android.graphics.BlurMaskFilter.Blur;
导入android.os.Bundle;
导入android.view.MotionEvent;
导入android.view.View;
导入android.view.Window;
导入android.view.WindowManager;

公共类sm延伸活动{
/ **当活动首次创建时调用。 * /
位图覆盖;
Paint pTouch;
int X = -100;
int Y = -100;
Canvas c2;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Bundle extras = getIntent()。getExtras();
byte [] photo = extras.getByteArray(photo);
位图mBitmap = BitmapFactory.decodeByteArray(photo,0,photo.length);
位图mBitmapover = BitmapFactory.decodeByteArray(photo,0,photo.length);

getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//位图mBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.android);
//位图mBitmapover = BitmapFactory.decodeResource(getResources(),R.drawable.ss);
overlay =
BitmapFactory.decodeResource
(getResources(),R.drawable.ss).copy(Config.ARGB_8888,true);
c2 = new Canvas(overlay);

pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);
// pTouch.setXfermode(new PorterDuffXfermode(Mode.TARGET);
pTouch.setColor(Color.TRANSPARENT);
pTouch.setMaskFilter(new BlurMaskFilter(15,Blur.NORMAL));
setContentView(新的BitMapView(this,mBitmap,mBitmapover));
}

类BitMapView扩展视图{
位图mBitmap = null;
位图mBitmapover = null;

public BitMapView(上下文上下文,位图bm,位图bmover){
super(上下文);
mBitmap = bm;
mBitmapover = bmover;
}
@Override
public boolean onTouchEvent(MotionEvent ev){

switch(ev.getAction()){

case MotionEvent。 ACTION_DOWN:{

X =(int)ev.getX();
Y =(int)ev.getY();
invalidate();

break;
}

case MotionEvent.ACTION_MOVE:{

X =(int)ev.get X();
Y =(int)ev.getY();
invalidate();
休息;

}

案例MotionEvent.ACTION_UP:

break;

}
返回true;
}


@覆盖
保护void onDraw(Canvas canvas){
//绘制视图时调用
Paint paint = new涂料();
paint.setFilterBitmap(true);
//图像将被缩放以便填充宽度,
// height将保留图像的纵横比例
/ * double aspectRatio =((double)mBitmap .getWidth())/ mBitmap.getHeight();
Rect dest = new Rect(0,0,this.getWidth(),(int)(this.getHeight()/ aspectRatio));
double aspectRatio2 =((double)mBitmapover.getWidth())/ mBitmapover.getHeight();
Rect dest2 = new Rect(0,0,this.getWidth(),(int)(this.getHeight()/ aspectRatio2));
canvas.drawBitmap(mBitmap,null,dest,paint);
canvas.drawBitmap(mBitmapover,null,dest2,paint); * /

//绘制背景
canvas.drawBitmap(mBitmap,0,0,null);
//将默认覆盖图复制到临时覆盖图中并在其中打出一个洞
c2.drawBitmap(mBitmapover,0,0,null); //排除这一行以在绘制时显示全部
c2.drawCircle(X,Y,80,pTouch);
//在背景上绘制叠加层
canvas.drawBitmap(overlay,0,0,null);



$解析方案

* 当你点击图片时,获取该图片的paht / uri并创建意图并将其意图放入其中,然后将其放入其他活动中并显示出来。

b

ex:

gridview.setOnItemClickListener(new OnItemClickListener(){

  public void onItemClick(AdapterView<> parent,View v,int position,long id){
int i = R.drawable.ic_launcher;

Intent intent = new Intent(SamaaActivity.this,kl.class);
intent.putExtra(intVariableName,i);
startActivity(intent);
}
});

并在其他活动中获得此结果

  Intent mIntent = getIntent(); 
int intValue = mIntent.getIntExtra(intVariableName,0);


i have a grid view which contain images when click on one image it should open in a another page.ie i need to pass the image from one activity to another where i want to get the pixels of the image.i have the code to get the pixels.what i need is that i have to show the image in anther activity so that to get the pixels.how to pass the selected image from one activity to another in android .i have tried some of the solution from stack overflow but it did not worked

//GridviewActivity.java

package gr.ed.vi;

          import android.app.Activity;
              import android.content.Context;
                import android.content.Intent;
           import android.os.Bundle;
           import android.view.View;
           import android.view.ViewGroup;
           import android.widget.AdapterView;
            import android.widget.BaseAdapter;
              import android.widget.GridView;
             import android.widget.ImageView;
                   import android.widget.Toast;
            import android.widget.AdapterView.OnItemClickListener;

      public class GridviewActivity extends Activity
    {    
    //---the images to display---
     Integer[] imageIDs = {
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher                    
};

@Override    
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    GridView gridView = (GridView) findViewById(R.id.gridview);
    gridView.setAdapter(new ImageAdapter(this));

    gridView.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView parent, 
        View v, int position, long id) 
        {                
           /* Toast.makeText(getBaseContext(), 
                    "pic" + (position + 1) + " selected", 
                    Toast.LENGTH_SHORT).show();*/
            switch(position){
           case 0:

           break;
           case 1:
           //call second class
              Intent intent = new Intent(GridviewActivity.this, sm.class);

         //  intent.putExtra("photo",imageIDs);
           //  Log.d(TAG, "jpegCallback1" +data);
            startActivity(intent); 

             // intent.putExtra("img", imageIDs);
             //startActivity(intent);

           break;
           case 2:
           //call third class
               Intent k1=new Intent(GridviewActivity.this,sm.class);
               startActivity(k1);
           break;

           default:
           break;
               }
        }
    });        
   }

   public class ImageAdapter extends BaseAdapter 
    {
    private Context context;

    public ImageAdapter(Context c) 
    {
        context = c;
    }

    //---returns the number of images---
    public int getCount() {
        return imageIDs.length;
    }

    //---returns the ID of an item--- 
    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    //---returns an ImageView view---
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(5, 5, 5, 5);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(imageIDs[position]);
        return imageView;
       }
   }    
  }

sm.java

package gr.ed.vi;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.AvoidXfermode.Mode;
import android.graphics.Bitmap.Config;
import android.graphics.BlurMaskFilter.Blur;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class sm extends Activity {
/** Called when the activity is first created. */
Bitmap overlay;      
Paint pTouch;
int X = -100;
int Y = -100;
Canvas c2;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle extras = getIntent().getExtras();
    byte[] photo = extras.getByteArray("photo");
    Bitmap mBitmap  = BitmapFactory.decodeByteArray (photo, 0, photo.length);
    Bitmap mBitmapover  = BitmapFactory.decodeByteArray (photo, 0, photo.length);

             getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,              
     WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
   // Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),         
    R.drawable.android);
   // Bitmap mBitmapover = BitmapFactory.decodeResource(getResources(), R.drawable.ss);
    overlay =   
    BitmapFactory.decodeResource                 
   (getResources(),R.drawable.ss).copy(Config.ARGB_8888, true);  
    c2 = new Canvas(overlay);

    pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);         
  //  pTouch.setXfermode(new PorterDuffXfermode(Mode.TARGET); 
    pTouch.setColor(Color.TRANSPARENT);
    pTouch.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL));
    setContentView(new BitMapView(this, mBitmap,mBitmapover));
}

class BitMapView extends View {
    Bitmap mBitmap = null;
    Bitmap mBitmapover = null;

    public BitMapView(Context context, Bitmap bm, Bitmap bmover) {
    super(context);
    mBitmap = bm;
    mBitmapover = bmover;
    }
     @Override
     public boolean onTouchEvent(MotionEvent ev) {

         switch (ev.getAction()) {

             case MotionEvent.ACTION_DOWN: {

                 X = (int) ev.getX();
                 Y = (int) ev.getY();
                 invalidate();

                 break;
             }

             case MotionEvent.ACTION_MOVE: {

                     X = (int) ev.getX();
                     Y = (int) ev.getY();
                     invalidate();
                     break;

             }           

             case MotionEvent.ACTION_UP:

                 break;

         }
         return true;
     }


    @Override
    protected void onDraw(Canvas canvas) {
    // called when view is drawn
    Paint paint = new Paint();
    paint.setFilterBitmap(true);
    // The image will be scaled so it will fill the width, and the
    // height will preserve the image’s aspect ration
/*  double aspectRatio = ((double) mBitmap.getWidth()) / mBitmap.getHeight();
    Rect dest = new Rect(0, 0, this.getWidth(),(int) (this.getHeight() / aspectRatio));
    double aspectRatio2 = ((double) mBitmapover.getWidth()) / mBitmapover.getHeight();
    Rect dest2 = new Rect(0, 0, this.getWidth(),(int) (this.getHeight() / aspectRatio2));
    canvas.drawBitmap(mBitmap, null, dest, paint);
    canvas.drawBitmap(mBitmapover, null, dest2, paint);                    */

    //draw background
    canvas.drawBitmap(mBitmap, 0, 0, null);
    //copy the default overlay into temporary overlay and punch a hole in it                          
    c2.drawBitmap(mBitmapover, 0, 0, null); //exclude this line to show all as you draw
    c2.drawCircle(X, Y, 80, pTouch);
    //draw the overlay over the background  
    canvas.drawBitmap(overlay, 0, 0, null);
    }
}

解决方案

*when you click a image get the paht/uri of that image and create intent and put the value with intent and get it in another activity and show it.

ex:

gridview.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
              int i=R.drawable.ic_launcher;

             Intent intent = new Intent(SamaaActivity.this,kl.class); 
            intent.putExtra("intVariableName", i);
            startActivity(intent);
    }
});

and get this on other activity

Intent mIntent = getIntent();
    int intValue = mIntent.getIntExtra("intVariableName", 0);

这篇关于在android中选择gridview将一个图像从一个活动移动到另一个活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆