import android.util.DisplayMetrics;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;
public class ControlImageSwitcher extends Activity
implements
OnItemSelectedListener, ViewFactory
{
private Gallery gallery;
private ImageSwitcher imageswitcher;
private ImageAdapter adapter;
private DisplayMetrics dm;
//@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题
int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN; // 全屏
this.getWindow().setFlags(flag, flag);
setContentView(R.layout.main);
// 得到屏幕尺寸
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
gallery = (Gallery)this.findViewById(R.id.gallery);
imageswitcher = (ImageSwitcher)this.findViewById(R.id.imageswitcher);
// 下面这句必须要,不然会使 setImageSource 这个方法指向空指针
imageswitcher.setFactory(this);
adapter = new ImageAdapter(this);
gallery.setAdapter(adapter);
gallery.setOnItemSelectedListener(this);
}
//@Override
public void onItemSelected(AdapterView< > parent, View view, int position, long id)
{
int imageID = (int) adapter.getItemId(position);
imageswitcher.setImageResource(imageID);
}
//@Override
public void onNothingSelected(AdapterView< > parent)
{
imageswitcher.setImageResource((int) adapter.getItemId(0));
}
//@Override
// 接口 ViewFactory 中规定必须实现的方法,返回的 View 就是 ImageSwitcher 用于显示图片的 vie w
public View makeView()
{
ImageView iv = new ImageView(this);
// 设置背景颜色
iv.setBackgroundColor(0xFF646464);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, dm.heightPixels - 70));
// 上面语句中 -70 的目的是应为, ImageSwitcher 下面要显示 Gallery ,我们在 ImageAdapter 中设定了
// view.setLayoutParams(new Gallery.LayoutParams(60, 60));
// 即高度是 60pixels ,在加在 main.xml 中 Gallery 有下面这样的属性:
// android:layout_marginTop="10px"
// 因此加起来一共刚好是 70px
return iv;
}
}
运行结果:
让下面的 Gallery 中的图片滚动,上面的 ImageSwitcher 会显示 Gallery 在屏幕上处于中间 ( 水平方向 ) 位置的那副图片: