Android---被弃用的Gallery控件+ImageSwitcher控件基础

来源:互联网 发布:excel解密码软件 编辑:程序博客网 时间:2024/04/30 23:07

Gallery是制作一个类似于一个画廊的Android控件,但是早已经被Android弃用了,被ViewPager等控件所替代,但还是有他自己独特的地方。ImageSwitcher是类似于图片切换工具。

首先是在layout布局文件中声明两个控件:
     <Gallery        android:id="@+id/gallery"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <ImageSwitcher        android:id="@+id/is"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_margin="10dp" >    </ImageSwitcher>

当然,还要做好准备工作,寻找图片,准备数据源。并且声明以上两个控件,并且初始化。
// 准备数据源private int[] res = { R.drawable.item1, R.drawable.item2, R.drawable.item3, R.drawable.item4, R.drawable.item5,R.drawable.item6, R.drawable.item7, R.drawable.item8, R.drawable.item9, R.drawable.item10, R.drawable.item11,R.drawable.item12};
private Gallery gallery;private ImageSwitcher iSwitcher;
gallery = (Gallery) findViewById(R.id.gallery);iSwitcher=(ImageSwitcher) findViewById(R.id.is);
然后就是新建一个适配器(BaseAdapter)
package com.example.gallery;import android.content.Context;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageView;import android.widget.ImageView.ScaleType;public class ImageAdapter extends BaseAdapter{private int[]res;private Context context;public  ImageAdapter(int[]res,Context context) {// TODO Auto-generated constructor stubthis.res=res;this.context=context;}//返回数据源数量@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;//整型最大数}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn res[position];}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLog.e("Main", "position="+position+"\t "+"res的角标="+position%res.length);ImageView imageView=new ImageView(context);imageView.setBackgroundResource(res[position%res.length]);//图像资源imageView.setLayoutParams(new Gallery.LayoutParams(400,300));//设置宽高imageView.setScaleType(ScaleType.FIT_XY);//显示模式,横向拉伸return imageView;}}
res[position%res.length]:是使其图片可以循环滑动

最后便是MainAcrivity中的加载适配器和设置控件的显示:

package com.example.gallery;import android.support.v7.app.ActionBarActivity;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.Gallery;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.ImageView.ScaleType;import android.widget.ViewSwitcher.ViewFactory;public class MainActivity extends Activity implements OnItemSelectedListener,ViewFactory{// 准备数据源private int[] res = { R.drawable.item1, R.drawable.item2, R.drawable.item3, R.drawable.item4, R.drawable.item5,R.drawable.item6, R.drawable.item7, R.drawable.item8, R.drawable.item9, R.drawable.item10, R.drawable.item11,R.drawable.item12};private Gallery gallery;private ImageSwitcher iSwitcher;private ImageAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gallery = (Gallery) findViewById(R.id.gallery);iSwitcher=(ImageSwitcher) findViewById(R.id.is);//传参到适配器adapter=new ImageAdapter(res, this);//加载适配器gallery.setAdapter(adapter);//gallery的点击事件gallery.setOnItemSelectedListener(this);iSwitcher.setFactory(this);iSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//android自带动画淡入效果iSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//android自带动画淡出效果}//设置ImageSwitcher的属性@Overridepublic View makeView() {// TODO Auto-generated method stubImageView imag=new ImageView(this);imag.setScaleType(ScaleType.FIT_CENTER);//等比例图片居中显示return imag;}
//gallery的点击事件
@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {// TODO Auto-generated method stub//imageView.setBackgroundResource(res[position%res.length]);iSwitcher.setBackgroundResource(res[position%res.length]);//ImageSwitcher随gallery的改变而改变
}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub}}



阅读全文
0 0
原创粉丝点击