如何在网格视图中设置图像?

时间:2011-05-17 09:00:56

标签: android

我想知道如何在网格布局中点击的图像上放置刻度线。我有滴答记录的图像请告诉我如何在图像上放置刻度线?

这是我的代码

    public class HeadshotAllPhoto extends Activity implements OnItemClickListener 
{
    ImageView bg,tickmark;
    int ht,wt;
    GridView imagegrid;
    static boolean flag = false;
    String path,filemanagerstring;
    String[] ImageNameArr;
    String filePath = null;
    String ImageName ;
    Bitmap bitmap;
    DataHelperHeadshot dbHeadshot;
    String uplaodedHeadshot;
    Cursor cursor;
    String sub_list ;
    String[] pathArr;
    Bitmap[] bmp;
    ArrayList<String> items = new ArrayList<String>();
    ImageView i;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.headshotallphoto);
        dbHeadshot = new DataHelperHeadshot(this);

        bg = (ImageView)findViewById(R.id.selectHeadshotView);      

        List<String> names = this.dbHeadshot.fetchAllHeadshot();
        StringBuilder sb = new StringBuilder();
        for (String name : names)
        { 
           name.trim();
           sb.append(",");
           sb.append(name);
        } 
        bmp = new Bitmap[SelectionHeadshot.icount+1];
        for(int p=0;p<names.size();p++)           
        {       
            if(names.get(p) !=null)
            {               
                bitmap = decodeFile(names.get(p));    
                if(bitmap!=null)
                {
                    items.add(names.get(p));                  
                    bmp[p] = bitmap;
                }
            }           
        }       
        imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
        imagegrid.setAdapter(new ImageAdapter(getApplicationContext(),bmp));
        imagegrid.setOnItemClickListener(this);      
    }

    public class ImageAdapter extends BaseAdapter
    {
        private Context mContext;       
        Bitmap[] mImageArray;        

        public ImageAdapter(Context c, Bitmap[] imgArray) 
        {
              mContext = c;
              mImageArray = imgArray;              
        }

        public int getCount() 
        {
              return mImageArray.length;
        }

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

        public View getView(int position,View convertView,ViewGroup parent)
        {
            System.gc();           
            if (convertView == null) 
            {               
                i = new ImageView(mContext);
                i.setLayoutParams(new GridView.LayoutParams(92,92));
                i.setScaleType(ImageView.ScaleType.CENTER_CROP);               
                i.setImageBitmap(mImageArray[position]);                
            }
            else 
                 i = (ImageView) convertView;           
            return i;
        }

    }

    public Bitmap decodeFile(String filePath) 
    {
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(filePath, o);

        // The new size we want to scale to
        final int REQUIRED_SIZE = 100;
        final int H = 50;

        // Find the correct scale value. It should be the power of 2.
        int width_tmp = o.outWidth, height_tmp = o.outHeight;
        int scale = 1;
        while (true) {
            if (width_tmp < REQUIRED_SIZE && height_tmp < H)
                break;
            width_tmp /= 2;
            height_tmp /= 2;
            scale *= 2;
        }
        // Decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize = scale;        
        bitmap = BitmapFactory.decodeFile(filePath, o2);        
        return bitmap;
    }

    public void onItemClick(AdapterView<?> a, View v, final int position, long id) 
    {   
        imagegrid.getChildAt(position).setBackgroundResource(R.drawable.imgredselectmark);  
    }
}

由于

1 个答案:

答案 0 :(得分:0)

试试这段代码:

        private int Splash_Time_Limit = 3000;

        gridview.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2,
                long arg3) {
            // TODO Auto-generated method stub

            gridview.getChildAt(arg2).setBackgroundResource(R.drawable.wrong);

            //  new Handler().postDelayed(new Runnable() {
            //  @Override
            //  public void run() {
            //       gridview.getChildAt(arg2).setBackgroundResource(R.drawable.tick1);
            //  }
            //  }, Splash_Time_Limit);
        }
    });

如果单击网格视图中的图像,则图像刻度图像将被设置为背景图像。

如果您想在一段时间后删除Tick图像,请使用已注释的Handler代码。