今天我们通过使用Android提供给我们的现有空间Gallery和ImageSwitcher来实现一个幻灯片式的图片浏览器。

(1)首先我们新建一个工程,修改主布局文件activity_main.xml内容如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_horizontal"    android:orientation="vertical" >    <ImageSwitcher        android:id="@+id/image_switcher"        android:layout_width="wrap_content"        android:layout_height="0dip"        android:layout_weight="2"        android:paddingTop="30dip" />    <!--         android:layout_weight  详细解释:按比例显示LinearLayout内各个子控件,    需设置android:layout_width="0dp",    如果为竖直方向的设置android:layout_height="0dp"。    在这种情况下某子个控件占用LinearLayout的比例为:    本控件weight值 / LinearLayout内所有控件的weight值的和。         android:spacing 设置图片的间距          android:unselectedAlpha 设置为选中条目的透明度    -->    <Gallery        android:id="@+id/gallery"        android:layout_width="fill_parent"        android:layout_height="0dip"        android:layout_weight="1"        android:spacing="5dip"        android:unselectedAlpha="0.6" /></LinearLayout>


(2)在Java代码部分,修改MainActivity.java的内容如下(代码已经详细注释):

public class MainActivity extends Activity {// 声明并静态初始化图片id数组private int[] imageIds = { R.drawable.img01, R.drawable.img02,R.drawable.img03, R.drawable.img04, R.drawable.img05,R.drawable.img06, R.drawable.img07, R.drawable.img08,R.drawable.img09, R.drawable.img10, R.drawable.img11,R.drawable.img12 };// 声明一个Gallery视图控件变量private Gallery gallery;// 声明一个ImageSwitcher视图控件变量private ImageSwitcher imageSwitcher;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取视图控件对象gallery = (Gallery) findViewById(R.id.gallery);imageSwitcher = (ImageSwitcher) findViewById(R.id.image_switcher);// 设置动画效果imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));// 为imageSwitcher设置ViewFactory对象imageSwitcher.setFactory(new ViewFactory() {@Overridepublic View makeView() {// 初始化一个ImageView对象ImageView imageView = new ImageView(MainActivity.this);// 设置保持纵横比居中缩放图像imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);// 设置imageView的宽高imageView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));return imageView;}});//初始化一个MainGalleryAdapter对象MainGalleryAdapter adapter = new MainGalleryAdapter();//将适配器与gallery关联起来gallery.setAdapter(adapter);//初始选中中间的图片gallery.setSelection(imageIds.length/2);gallery.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {//在ImageSwitcher中显示选中的图片imageSwitcher.setImageResource(imageIds[position]);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}/** * 定义Gallery的数据适配器MainGalleryAdapter */class MainGalleryAdapter extends BaseAdapter {/** * 获得数量 */@Overridepublic int getCount() {return imageIds.length;}/** * 获得当前选项 */@Overridepublic Object getItem(int position) {return getResources().getDrawable(imageIds[position]);}/** * 获得当前选项的id */@Overridepublic long getItemId(int position) {return position;}/** * 获得当前选项的视图 */@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//初始化一个ImageView对象ImageView imageView = new ImageView(MainActivity.this);//设置缩放方式imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置ImageView的宽高imageView.setLayoutParams(new Gallery.LayoutParams(180, 135));//设置IamgeView显示的图片imageView.setImageResource(imageIds[position]);/** * 设置ImageView背景,这里背景使用的是android提供的一种背景风格 * 在values/attr.xml文件中需要一下内容 *  <declare-styleable name="Gallery"> *<attr name="android:galleryItemBackground" />     *</declare-styleable> */TypedArray typedArray = MainActivity.this.obtainStyledAttributes(R.styleable.Gallery);int mGalleryItemBackground = typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);imageView.setBackgroundResource(mGalleryItemBackground);//返回ImageView对象return imageView;}}}

(3)我们看一下程序运行后的效果图:



(4)附上完整的android源码:

Android幻灯片式的图片浏览器

更多相关文章

  1. android 4.4 设置默认日期格式
  2. Android初级教程小案例之单选框RadioGroup与复选框CheckBox
  3. Android(安卓)登录界面Demo源码
  4. EditText android:windowSoftInputMode 属性之旅
  5. Android(安卓)EditText 为空提示 密码隐藏
  6. android XMl 解析神奇xstream 二: 把对象转换成xml
  7. imageButton被边框包围的原因、解决办法
  8. android webview 设置背景透明色
  9. Android设置权限问题

随机推荐

  1. Android(二)HelloWorld,Android(上)
  2. 环境配置
  3. API 23 widget.AnalogClock——属性分析
  4. edittext底部输入
  5. Android(安卓)如何获取RadioGroup选中Rad
  6. android N0 屏蔽某个应用的通知
  7. 安卓开发问题记录
  8. ListView CheckBox点击事件
  9. android 分段显示文本颜色控件
  10. Android(安卓)Settings 修改默认主题为白