在android教程应用程序上制作全屏图像

在android教程应用程序上制作全屏图像,android,imageview,Android,Imageview,使用Hello,World Gridview教程示例,我试图在单击时使图像全屏显示,而不是显示图像在阵列中的位置。由于我与Android不相似,这是我第一次尝试使用它进行开发,所以我不知所措。不过我对Java很熟悉,我也尝试过这样做(显然不起作用): public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView

使用Hello,World Gridview教程示例,我试图在单击时使图像全屏显示,而不是显示图像在阵列中的位置。由于我与Android不相似,这是我第一次尝试使用它进行开发,所以我不知所措。不过我对Java很熟悉,我也尝试过这样做(显然不起作用):

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView GridView=(GridView)findViewById(R.id.GridView);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
showImage(v,位置);
Toast.makeText(HelloAndroid.this,“+parent.getId(),Toast.LENGTH\u SHORT.show();
}
});
}
私有void showImage(视图,int位置){
ImageView imgView=(ImageView)视图;
imgView.setImageResource(位置);
}
但应用程序崩溃(强制关闭)。有什么想法吗


在这里,您将获取单击的视图的ID(在
视图
参数中传递),并使用它再次查找自身:

ImageView imgView = (ImageView) findViewById(view.getId()); 
这毫无意义,尤其是因为单击的视图显然没有ID,导致
findViewById
返回
null

您可能希望传递
ImageView
的ID:

ImageView imgView = (ImageView) findViewById(R.id.whatever_the_id_of_the_image_view_is);
这会给您一个错误,因为您没有正确使用它。该参数应指向图像的资源ID(为int),例如
R.ID.imageid
。即使您提供了正确的资源ID,您想要做的也不会起作用

要获得正确的资源ID,您需要调用视图的适配器,并使用
getItemId(position)
方法来获得正确的资源ID。在ImageAdapter中,如果您将
getItemId()
方法更改为返回
mThumbsIds[position]
,而不是0(如谷歌的示例所示)

然而,为了达到你的效果,我建议你创建一个新的活动,然后像那样加载图像

例如:

gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        long imageId = (ImageAdapter)parent.getAdapter.getItemAt(position);

        Intent fullScreenIntent = new Intent(v.getContext(), FullScreenImage.class);
        fullScreenIntent.putExtra(thisClassName.class.getName(), imageId);

        thisClassName.this.startActivity(fullScreenIntent);
    }
});

沿着这些路线的一些东西应该适合你,并进行一些调整。确保在
AndroidManifest.xml
文件中也将FullScreenImage添加为

您得到的确切错误是什么?LogCat怎么说?它向imgView.setImageResource抛出了一个空指针。谢谢关于logcat的提示,我只是在使用常规调试器。至少现在我可以看到详细的错误:)view.getId()是-1 btw.v是我的ImageView,但是我在调试器中仔细检查了一下,它显示在那里好的,但是它没有mID(它似乎是id,因为如果我尝试parent.getId()就会显示它)。ImageView是在代码内部生成的动态对象,是GridView的数据组成(如果有帮助的话)。我正在靠近,现在图像变为空白,我没有收到错误。由于ImageView在GridView内部,我必须替换GridView吗?我已经更新了代码,以显示我正在做的更大部分。我是g因为你误报了我,你现在得到了一个ClassCastException。我回到了我以前的答案,这是正确的。如果它对你不起作用,请报告确切的异常和行号。需要一些编辑,但我一开始就了解了它的要点。我可能应该从更简单一点的内容开始,跳入Android:plong imageId=(ImageAdapter)parent.getAdapter.getItemAt(position);--此行显示类型不匹配:无法从MainActivity.ImageAdapter转换为long
imgView.setImageResource(position); 
gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        long imageId = (ImageAdapter)parent.getAdapter.getItemAt(position);

        Intent fullScreenIntent = new Intent(v.getContext(), FullScreenImage.class);
        fullScreenIntent.putExtra(thisClassName.class.getName(), imageId);

        thisClassName.this.startActivity(fullScreenIntent);
    }
});
public class FullScreenImage extends Activity
{
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.full_image);
        Intent intent = getIntent();
        long imageId = intent.getExtras().get(thisClassName.class.getName());
        ImageView imageView = (ImageView) v.findViewById(R.id.fullImage);

        imageView.setLayoutParams( new ViewGroup.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT));

        imageView.setImageResource(imageId);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    }
}