如何设置在ImageView的ImageView的? [英] How to set imageview over imageview?

查看:229
本文介绍了如何设置在ImageView的ImageView的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有摄像机图像的动态ImageView的,我的问题是我想设置的ImageView我选择刻度标记。请帮我。

  @覆盖
保护无效的onCreate(捆绑savedInstanceState)
{
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.headshotallphoto);
    dbHeadshot =新DataHelperHeadshot(本);    DisplayMetrics displaymetrics =新DisplayMetrics();
    。getWindowManager()getDefaultDisplay()getMetrics(displaymetrics)。
    HT = displaymetrics.heightPixels;
    重量= displaymetrics.widthPixels;    GridView控件imagegrid =(GridView控件)findViewById(R.id.PhoneImageGrid);
    imagegrid.setAdapter(新ImageAdapter(getApplicationContext(),BMP));
    imagegrid.setOnItemClickListener(本);
}公共类ImageAdapter延伸BaseAdapter
{
    私人语境mContext;
    私人位图[] mImageArray;    公共ImageAdapter(上下文C,位图[] imgArray)
    {
          mContext = C;
          mImageArray = imgArray;    }
    公众诠释getCount将()
    {
          返回mImageArray.length;    }
    公共对象的getItem(INT位置)
    {
          返回的位置;
    }
    众长getItemId(INT位置)
    {
          返回的位置;
    }    公共查看getView(INT位置,查看convertView,父母的ViewGroup)
    {
        System.gc()的;
        ImageView的I = NULL; // =新ImageView的(mContext.getApplicationContext());        如果(convertView == NULL)
        {
            I =新ImageView的(mContext);
            i.setLayoutParams(新GridView.LayoutParams(92,92));
            i.setScaleType(ImageView.ScaleType.CENTER_CROP);
            i.setPadding(8,8,8,8);
            i.setImageBitmap(mImageArray [位置]);
        }
         其他
             I =(ImageView的)convertView;
         返回我;
    }
}公共位图德codeFILE(字符串文件路径)
{
    BitmapFactory.Options O =新BitmapFactory.Options();
    o.inJustDe codeBounds = TRUE;
    BitmapFactory.de codeFILE(文件路径,O);    //我们希望新的大小缩放到
    最终诠释REQUIRED_SIZE = 100;
    最终诠释H = 50;    //找到正确的比例值。它应该是2的幂。
    INT width_tmp = o.outWidth,height_tmp = o.outHeight;
    int标= 1;
    而(真){
        如果(width_tmp< REQUIRED_SIZE&放大器;&安培; height_tmp< H)
            打破;
        width_tmp / = 2;
        height_tmp / = 2;
        规模* = 2;
    }
    //德code。与inSampleSize
    BitmapFactory.Options O2 =新BitmapFactory.Options();
    o2.inSampleSize =规模;
    位= BitmapFactory.de codeFILE(文件路径,O2);
    返回位图;
}公共无效onItemClick(适配器视图<>一种,视图V,INT位置,长的ID)
{
    ImageView的对勾标记=新ImageView的(本);
    tickmark.setBackgroundResource(R.drawable.imgredselectmark);
}


解决方案

使用框架布局:

 <的FrameLayout
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:方向=垂直
        机器人:填充=5dip>
        < ImageView的
    机器人:ID =@ + ID / image_check
            机器人:方向=垂直
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
            机器人:SRC =@绘制/滴答/>
                < ImageView的
                机器人:ID =@ + ID / ImageView的
                机器人:layout_width =FILL_PARENT
                机器人:layout_height =WRAP_CONTENT
                机器人:SRC =@绘制/图像>

在GridView的

  gridview.setOnItemClickListener(新OnItemClickListener(){    @覆盖
    公共无效onItemClick(适配器视图<>母公司,最终意见认为,最终诠释的位置,
                长ID){
            view.setOnClickListener(新View.OnClickListener(){@覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
如果(view.findViewById(R.id.image_check).getVisibility == ImageView.VISIBLE)
   {
view.findViewById(R.id.image_check).setVisibility(ImageView.VISIBLE)
   }
  其他
  {
view.findViewById(R.id.image_check).setVisibility(ImageView.GONE)
  }}
}
});

I have a dynamic imageview of camera picture, my problem is I want to set tick mark on imageview which i select. Please help me.

@Override
protected void onCreate(Bundle savedInstanceState) 
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.headshotallphoto);
    dbHeadshot = new DataHelperHeadshot(this);

    DisplayMetrics displaymetrics = new DisplayMetrics();       
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);      
    ht = displaymetrics.heightPixels;      
    wt = displaymetrics.widthPixels;        

    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
    imagegrid.setAdapter(new ImageAdapter(getApplicationContext(),bmp));
    imagegrid.setOnItemClickListener(this); 
}

public class ImageAdapter extends BaseAdapter
{
    private Context mContext;
    private 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();
        ImageView i = null ;//= new ImageView(mContext.getApplicationContext());

        if (convertView == null) 
        {               
            i = new ImageView(mContext);
            i.setLayoutParams(new GridView.LayoutParams(92,92));
            i.setScaleType(ImageView.ScaleType.CENTER_CROP);
            i.setPadding(8, 8, 8, 8); 
            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, int position, long id) 
{
    ImageView tickmark = new ImageView(this);
    tickmark.setBackgroundResource(R.drawable.imgredselectmark);
}

解决方案

Use Frame layout:

 <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="5dip">
        <ImageView
    android:id="@+id/image_check"
            android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
            android:src="@drawable/tick"/>
                <ImageView
                android:id="@+id/imageview"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/image">

In GridView

gridview.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, final View view, final int position,
                long id) {
            view.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(view.findViewById(R.id.image_check).getVisibility==ImageView.VISIBLE)
   {
view.findViewById(R.id.image_check).setVisibility(ImageView.VISIBLE)
   }
  else
  {
view.findViewById(R.id.image_check).setVisibility(ImageView.GONE)
  }

}
}
});

这篇关于如何设置在ImageView的ImageView的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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