Android實現(xiàn)圖片瀏覽器示例
本文所述為一個基礎的Android圖片瀏覽器代碼,是仿寫Google原版實現(xiàn)的,代碼中實現(xiàn)了主要的實現(xiàn)過程和方法,具體的完善還需要自己添加,代碼中有很多注釋,可幫助新手們快速理解代碼,使用了部分圖像資源。
主要功能代碼如下:
package com.android.coding;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
public class ViewPicturesActivity extends Activity {
ImageSwitcher imageSwitcher; //聲明ImageSwitcher對象,圖片顯示區(qū)域
Gallery gallery; //聲明Gallery對象,圖片列表索引
int imagePosition; //標記圖片數組下標,用于循環(huán)顯示
//聲明圖片整型數組
private int[] images = {
R.drawable.image1,R.drawable.image2,
R.drawable.image3,R.drawable.image4,
R.drawable.image5,R.drawable.image6,
R.drawable.image7,R.drawable.image8,
R.drawable.image9,R.drawable.image10,
R.drawable.image11,R.drawable.image12,
R.drawable.image13,R.drawable.image14,
R.drawable.image15,R.drawable.image16,
R.drawable.image17};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通過控件的ID獲得imageSwitcher的對象
imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
//設置自定義的圖片顯示工廠類
imageSwitcher.setFactory(new MyViewFactory(this));
//通過控件的ID獲得gallery的對象
gallery = (Gallery) findViewById(R.id.gallery);
//設置自定義的圖片適配器
gallery.setAdapter(new ImageAdapter(this));
//實現(xiàn)被選中的事件監(jiān)聽器
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//通過求余數,循環(huán)顯示圖片
imageSwitcher.setImageResource(images[position%images.length]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
//自定義圖片適配器,繼承BaseAdapter
class ImageAdapter extends BaseAdapter{
private Context context; //定義上下文
//參數為上下文的構造方法
public ImageAdapter(Context context) {
this.context = context;
}
//得到圖片的大小
@Override
public int getCount() { //設置為整型的最大數
return Integer.MAX_VALUE;
}
//得到指定圖片的對象
@Override
public Object getItem(int position) {
return null;
}
//得到指定圖片的對象的ID
@Override
public long getItemId(int position) {
return 0;
}
//顯示圖標列表
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context); //創(chuàng)建ImageView對象
iv.setImageResource(images[position%images.length]); //設置循環(huán)顯示圖片
iv.setAdjustViewBounds(true); //圖片自動調整顯示
//設置圖片的寬和高
iv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
return iv; //返回ImageView對象
}
}
//自定義圖片顯示工廠類,繼承ViewFactory
class MyViewFactory implements ViewFactory{
private Context context; //定義上下文
//參數為上下文的構造方法
public MyViewFactory(Context context) {
this.context = context;
}
//顯示圖標區(qū)域
@Override
public View makeView() {
ImageView iv = new ImageView(context); //創(chuàng)建ImageView對象
iv.setScaleType(ImageView.ScaleType.FIT_CENTER); //圖片自動居中顯示
//設置圖片的寬和高
iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
return iv; //返回ImageView對象
}
}
}
本文所述僅為其主要功能代碼部分,讀者可以對其進一步加以完善。由圖像查看器還可以擴展出很多實用的Android圖像操作功能,這些都是作為一個android應用開發(fā)新手應該搞定的技巧。
相關文章
android 使用okhttp可能引發(fā)OOM的一個點
這篇文章主要介紹了android 使用okhttp可能引發(fā)OOM的一個點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
Android7.0中關于ContentProvider組件詳解
本文描述了Android7.0中關于ContentProvider組件實現(xiàn)原理以及ContentProvider發(fā)布者和調用者這兩在Framework層是如何實現(xiàn)的。2017-11-11
android studio 4.0 新建類沒有修飾符的方法
這篇文章主要介紹了android studio 4.0 新建類沒有修飾符的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
Android UI設計系列之自定義ListView仿QQ空間阻尼下拉刷新和漸變菜單欄效果(8)
這篇文章主要介紹了Android UI設計系列之自定義ListView仿QQ空間阻尼下拉刷新和漸變菜單欄效果,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下2016-06-06
Android項目開發(fā)常用工具類LightTaskUtils源碼介紹
LightTaskUtils是一個輕量級的線程管理工具,本文通過實例代碼給大家詳細介紹Android項目開發(fā)常用工具類LightTaskUtils的相關知識,感興趣的朋友一起看看吧2022-06-06

