android ImageSwitcher和Gallery的使用
android 中ImageSwitcher和Gallery可以用来做出类似幻灯片的效果,ImageSwticher控件的功能是用来显示图片和设置图片进出动画,通俗点讲,ImageSwitcher是一个用来显示具体图片的面板(view),对这个面板,可以设置图片进入时候的动画,以及离开时候的动画,Gallery是一个容器,用来存储在ImageSwticher里面显示的具体图片。
布局文件:
<RelativeLayout xmlns:android="http://shemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_hegiht="match_paernt">
<ImageSwticher <!-- 申明ImageSwitcher控件,用来显示图片,有点像图片显示器-->
android:id="@+id/imgs"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true" <!--设置控件和父布局顶端和左面对齐-->
android:layout_alignParentLeft="true"/>
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_hegiht="100dp"
android:layout_alignParentBottom="true" <!-- 设置控件和父布局底部和左对齐->
android:layout_alignParentLeft="true"
android:gravity="center_vertical"
android:spacing="6dp"/> <!--设置容器里面各个部分之间的间隔距离-->
</RelativeLayout>
android代码简介:
public class MainActivity extends Activity implements android.widget.ViewSwitcher.ViewFactory,android.widget.AdapterView.OnItemSelectedListener
{
private ImageSwitcher imgSwitcher;
private Gallery gallery;
private Integer imgs[] ={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawabe.e,R.drawable.f,R.drawable.g};//这里添加自己的图片
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlayout);//mainlayout为上面定义的布局文件
imgSwitcher = (ImageSwitcher)findViewById(R.id.imgs);
gallery = (Gallery)findViewById(R.id.gallery);
imgSwitcher.setInAnimation(this,android.R.anim.fade_in);//设置图片进入动画
imgSwitcher.setOutAnimation(this,android.R.anim.fade_out);//设置图片退出动画
imgSwither.setFactory(this);//设置视图工厂,不知道这个视图工厂是干嘛用的!好像和makeView对应
GalleryAdapter adapter = new GalleryAdaper(this);//这个自定义适配器主要用来设置Gallery容器里面的数据
gallery.setOnItemSelectedListener(this);
gallery.setAdapter(adapter);
}
@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,int id)
{
imgSwitcher.setImageResource(imgs[position]);//根据Gallery的选择,在ImageSwitcher里面显示对应的图片
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
@Override
public View makeView()
{
ImageView view = new ImageView(this);
view.setBackgroundColor(0xff000000);
view.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
view.setScaleType(ImageSwitcher.ScaleType.FIT_CENTER);
return view;
}
class GalleryAdapter extends BaseAdapter
{
private Context context;
GalleryAdaper(Context c)
{
context = c;
}
public int getCount()
{
return imgs.length;
}
public Object getItem(int position)
{
return imgs[position];
}
public long getItemId(int position)
{
return position;
}
public View getView(int position,View view,ViewGroup groupview)
{
ImageView v = new ImageView(context);
v.setImageResource(imgs[position]);
v.setAdjustViewBounds(true)//设置允许调整图片大小,这里设置它的原因是:布局文件里面对Gallery高度的设置是:
/*android:layout_height=""100dp*,这时候使用的图片资源高度可以比它大或者小,加上这个属性,就可以让Gallery自动调整图片的大小/
v.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
return v;
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。