Android 从库中单击弹出图像
我是android新手。如何从图库视图中弹出所选图像。我附加了我的编码Android 从库中单击弹出图像,android,Android,我是android新手。如何从图库视图中弹出所选图像。我附加了我的编码 public class mygallerycode extends Activity { Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3}; Gallery gallery; ImageView imageview; public void onCreate(Bundle bb) { s
public class mygallerycode extends Activity
{
Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};
Gallery gallery;
ImageView imageview;
public void onCreate(Bundle bb) {
super.onCreate(bb);
setContentView(R.layout.mygallery);
gallery=(Gallery)findViewById(R.id.gallery1);
gallery.setAdapter(new ImageAdapter(this));
imageview=(ImageView)findViewById(R.id.imageView1);
gallery.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v,
int position, long id)
{
Toast.makeText(getBaseContext(),"picture" + (position+1) +"selected",Toast.LENGTH_SHORT).show();
//imageview.setImageResource(a[position]);
}
});
}
class ImageAdapter extends BaseAdapter
{
private Context context;
private int itemBackground;
public ImageAdapter(Context c)
{
context = c;
//---setting the style---
TypedArray ta = obtainStyledAttributes(R.styleable.gallery1);
itemBackground = ta.getResourceId(
R.styleable.gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return a.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(context);
imageView.setImageResource(a[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
}
公共类mygallerycode扩展活动
{
整数[]a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};
画廊;
图像视图图像视图;
创建时的公共void(Bundle bb){
super.onCreate(bb);
setContentView(R.layout.mygallery);
画廊=(画廊)findViewById(R.id.gallery1);
gallery.setAdapter(新的ImageAdapter(本));
imageview=(imageview)findViewById(R.id.imageView1);
gallery.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id)
{
Toast.makeText(getBaseContext(),“picture”+(位置+1)+“selected”,Toast.LENGTH_SHORT).show();
//setImageResource(一个[位置]);
}
});
}
类ImageAdapter扩展BaseAdapter
{
私人语境;
私人背景;
公共图像适配器(上下文c)
{
上下文=c;
//---设置样式---
TypedArray ta=获得的StyledAttributes(R.styleable.gallery1);
itemBackground=ta.getResourceId(
R.styleable.gallery1_android_galleryItemBackground,1);
ta.recycle();
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回a.length;
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置,视图转换视图,
视图组(父级){
//TODO自动生成的方法存根
ImageView ImageView=新的ImageView(上下文);
setImageResource(一个[位置]);
imageView.setScaleType(imageView.ScaleType.FIT_XY);
imageView.setLayoutParams(新的Gallery.LayoutParams(150120));
imageView.setBackgroundResource(itemBackground);
返回图像视图;
}
}
}
适用于相对较小图像的解决方案
如果要加载大型图像,则应阅读(查看decodeSampledBitmapFromResource
和calculateInSampleSize
方法并使用AsyncTask)
但对于相对较小的图像,这里有一个可能的解决方案: mygallerycode活动类:
public class mygallerycode extends Activity
{
Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};
Gallery gallery;
ImageView imageview;
public void onCreate(Bundle bb) {
super.onCreate(bb);
setContentView(R.layout.mygallery);
gallery=(Gallery)findViewById(R.id.gallery1);
gallery.setAdapter(new ImageAdapter(this));
imageview=(ImageView)findViewById(R.id.imageView1);
gallery.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v,
int position, long id)
{
showPopupImage(a[position]);
}
});
}
private void showPopupImage(Integer imageResource) {
AlertDialog.Builder imageDialog = new AlertDialog.Builder(this);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_fullimage_dialog,
(ViewGroup) findViewById(R.id.layout_root));
ImageView image = (ImageView) layout.findViewById(R.id.fullimage);
image.setImageResource(imageResource);
imageDialog.setView(layout);
imageDialog.setCancelable(true);
imageDialog.create();
imageDialog.show();
}
class ImageAdapter extends BaseAdapter
{
private Context context;
private int itemBackground;
public ImageAdapter(Context c)
{
context = c;
//---setting the style---
TypedArray ta = obtainStyledAttributes(R.styleable.gallery1);
itemBackground = ta.getResourceId(
R.styleable.gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return a.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(context);
imageView.setImageResource(a[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
}
您的问题是什么?您所说的弹出窗口是什么意思?谢谢。这种方法很有效。但我不知道如何全屏弹出图像。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="10dp">
<ImageView android:id="@+id/fullimage" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ImageView>
</LinearLayout>
private void showPopupImage(Integer imageResource) {
AlertDialog.Builder imageDialog = new AlertDialog.Builder(this);
ImageView image = new ImageView(this);
image.setImageResource(imageResource);
imageDialog.setView(image);
imageDialog.setCancelable(true);
imageDialog.create();
imageDialog.show();
}