从GridView显示图像,然后在图像之间滑动

时间:2014-04-16 14:07:25

标签: android image gridview

我目前能够使用网址字符串填充gridview并拥有一个onClick()监听器,可以全屏显示gridview中的图片。

MainActivity

public class MainActivity extends Activity {

GridView grid;
LazyAdapter adapter;
public static ArrayList<String> arrayList = new ArrayList<String>();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //list=(ListView)findViewById(R.id.list);
    grid = (GridView) findViewById(R.id.grid);

    try {
        new myAsyncTask(this).execute(arrayList).get();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }
    for(int i=0;i<arrayList.size(); i++){
        Log.v("onCreate: ", arrayList.get(i));
    }

    String[]myArray = new String[arrayList.size()];
    myArray = arrayList.toArray(myArray);
    for(int i=0; i<arrayList.size();i++){
        Log.v("myArray", myArray[i]);
    }

    adapter=new LazyAdapter(this, myArray);
    grid.setAdapter(adapter);



    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            Log.v("Picture # ", String.valueOf(i));
            Log.v("fsdf", adapterView.getItemAtPosition(i).toString());

            Intent intent = new Intent(getApplicationContext(), FullScreenImage.class);
            intent.putExtra("id", imageUrl);
            startActivity(intent);



        }
    });

FullScreenImage

public class FullScreenImage extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.full_screen);

    Intent intent = getIntent();

    //int position = intent.getExtras().getInt("id");
    String position = intent.getExtras().getString("id");
    Log.v("FSI==", position);
    ImageView im = (ImageView) findViewById(R.id.full_image_view);
    ImageLoader imLo = new ImageLoader(this.getApplicationContext());
    imLo.DisplayImage(position, im);

}

}

ImageLoader类中的DisplayImage

public void DisplayImage(String url, ImageView imageView)
{
    imageViews.put(imageView, url);
    Bitmap bitmap=memoryCache.get(url);
    if(bitmap!=null)
        imageView.setImageBitmap(bitmap);
    else
    {
        queuePhoto(url, imageView);
        imageView.setImageResource(stub_id);
    }
}

activity_main.xml中

<GridView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/grid"
    android:numColumns="2"
    android:horizontalSpacing="6dip"
    android:verticalSpacing="6dip"
    />

item.xml

<ImageView
    android:id="@+id/image"
    android:layout_width="150dip"
    android:layout_height="150dip"
    android:src="@drawable/ic_launcher"
    android:scaleType="centerCrop"/>

full_screen.xml

<ImageView android:id="@+id/full_image_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

我现在想做什么..

单击图像后,用户应该可以在图像之间滑动,而不必返回gridview选择另一个图像。 (我还希望在某些时候添加双指缩放,共享功能)

显然, DisplayImage 类中方法 ImageLoader 的参数需要将一个字符串Url与{{{{{{ 1}}因为这是我用来填充ImageView

的方法

我整天都在玩GridView,但没有取得多大成功。

所以,我希望有人能够就如何最好地实现我想做的事情提供一些指导。如果Fragment是要走的路:

  • 我需要从fragment类传递到FullScreenImage类的哪些信息,然后在我当前方法需要{{1}的情况下显示图像的最佳方式是什么?参数而不是寻呼机?

希望这对你的时间和回应非常有意义并且非常感谢, 亲切的问候。

0 个答案:

没有答案