本文介绍了如何设置在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的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!