项目短视频
操作示范如下(时长22:05)

【例6-5】用ImageSwitcher展示相册示例
将事先准备好的多张图片复制到资源drawable目录。安排一个图片切换器(ImageSwitcher)和布局容器(HorizontalScrollView),单击布局容器(Horizontal- ScrollView)里的小图片,就会在图片切换器(ImageSwitcher)中出现放大的图片,效果如上图所示。
布局文件image_show.xml的源代码
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageSwitcher
android:id="@+id/switcher"
android:layout_width="match_parent"
android:layout_height="550dp"/>
<HorizontalScrollView
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:padding="3pt">
</HorizontalScrollView>
</LinearLayout>
控制文件ImageShowActivity.java的源代码如下:
package com.example.chap06;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ViewSwitcher;
public class ImageShowActivity extends AppCompatActivity
implements ViewSwitcher.ViewFactory {
ImageSwitcher mSwitcher;
HorizontalScrollView hsv;
Integer[] mImageIds={
R.drawable.sample_0,R.drawable.sample_1,R.drawable.sample_2,R.drawable.sample_3,
R.drawable.sample_4,R.drawable.sample_5,R.drawable.sample_6,R.drawable.sample_7 };
Integer[] mThumbIds={
R.drawable.sample_thumb_0,R.drawable.sample_thumb_1,R.drawable.sample_thumb_2,
R.drawable.sample_thumb_3,R.drawable.sample_thumb_4,R.drawable.sample_thumb_5,
R.drawable.sample_thumb_6,R.drawable.sample_thumb_7};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_show);
mSwitcher = (ImageSwitcher)findViewById(R.id.switcher);
hsv = (HorizontalScrollView)findViewById(R.id.gallery);
mSwitcher.setFactory(this);
mSwitcher.setImageResource(R.drawable.sample_0);
initView();
}
public void initView() { //水平滚动视图里面放一系列小图片
LinearLayout layout= new LinearLayout(this);
for(int i=0;i<mThumbIds.length;i++){
ImageView img = new ImageView(this);
img.setId(i);
img.setImageResource(mThumbIds[i]);
layout.addView(img);
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//根据小图的id取出大图数组中相应的图片
mSwitcher.setImageResource(mImageIds[view.getId()]);
}
});
}
hsv.addView(layout);
}
@Override
public View makeView() {
ImageView img = new ImageView(this);
//img.setBackgroundColor(Color.WHITE); //设置背景色
//img.setScaleType(ImageView.ScaleType.FIT_CENTER);
//设置图片在容器中的填充方式
img.setLayoutParams(new ImageSwitcher.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
return img;
}
}
打开项目配置文件AndroidManifest.xml,确保工程要启动的Activity类名为 ImageShowActivity。

