实例介绍
【实例截图】
【核心代码】
package com.example.imagewatch_text1; import android.app.Activity; import android.content.res.TypedArray; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import android.widget.ViewSwitcher.ViewFactory; public class MainActivity extends Activity implements ViewFactory, OnTouchListener { private int[] imageId = new int[] { 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, }; // 定义并初始化保存图片id的数组 private ImageSwitcher imageSwitcher; // 声明一个图像切换器对象 /** 当前选中的图片id序号 */ private int currentPosition; /** 按下点的X坐标 */ private float downX; private Adapter adapter; /** false为未出现gallery,否则反 */ private Boolean flag = true; private LinearLayout galler_visble; private int position_current; @SuppressWarnings("deprecation") private Gallery gallery; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gallery = (Gallery) findViewById(R.id.gallery1); // 获取Gallery组件 imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1); // 获取图像切换器 galler_visble = (LinearLayout) findViewById(R.id.galler_visble); imageSwitcher.setFactory(this); // 设置OnTouchListener,我们通过Touch事件来切换图片 imageSwitcher.setOnTouchListener(this); // 这个我是从上一个界面传过来的,上一个界面是一个GridView // currentPosition = getIntent().getIntExtra("position", 0); adapter = new Adapter(); // currentPosition = adapter.getPosition(); // imageSwitcher.setImageResource(imageId[currentPosition]); Log.i("dony", "currentPosition//////////" currentPosition); // setGalleryPosition(currentPosition); // 设置动画效果 // imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, // android.R.anim.fade_in)); // 设置淡入动画 // imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, // android.R.anim.fade_out)); // 设置淡出动画 // imageSwitcher.setFactory(new ViewFactory() { // // @Override // public View makeView() { // ImageView imageView = new ImageView(MainActivity.this); // // 实例化一个ImageView类的对象 // imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); // // 设置保持纵横比居中缩放图像 // imageView.setLayoutParams(new ImageSwitcher.LayoutParams( // LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); // return imageView; // 返回imageView对象 // } // // }); /********************** 使用BaseAdapter指定要显示的内容 *****************************/ gallery.setAdapter(adapter); // 将适配器与Gallery关联 /*********************************************************************************/ gallery.setSelection(imageId.length / 2); // 让中间的图片选中 gallery.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { imageSwitcher.setImageResource(imageId[position]);// 显示选中的图片 currentPosition = position; // position_current = position; Log.i("dony", "currentPosition=========" currentPosition); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } class Adapter extends BaseAdapter { private int position; @SuppressWarnings("deprecation") @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageview; // 声明ImageView的对象 if (convertView == null) { imageview = new ImageView(MainActivity.this); // 实例化ImageView的对象 imageview.setScaleType(ImageView.ScaleType.FIT_XY); // 设置缩放方式 imageview.setLayoutParams(new Gallery.LayoutParams(180, 135)); TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery); imageview.setBackgroundResource(typedArray.getResourceId( R.styleable.Gallery_android_galleryItemBackground, 0)); imageview.setPadding(5, 0, 5, 0); // 设置ImageView的内边距 } else { imageview = (ImageView) convertView; } this.position = position; imageview.setImageResource(imageId[position]); // 为ImageView设置要显示的图片 Log.i("dony", "adapter position" position); return imageview; // 返回ImageView } public int getPosition() { return this.position; } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return position; } @Override public int getCount() { return imageId.length; } } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { // 手指按下的X坐标 downX = event.getX(); break; } case MotionEvent.ACTION_UP: { float lastX = event.getX(); // 抬起的时候的X坐标大于按下的时候就显示上一张图片 if (lastX - downX > 100) { if (currentPosition > 0) { // 设置动画,这里的动画比较简单,不明白的去网上看看相关内容 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation( getApplication(), R.anim.left_in)); imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation( getApplication(), R.anim.right_out)); currentPosition--; gallery.setSelection(currentPosition); Log.i("dony", "当前currentPosition=====" currentPosition); imageSwitcher.setImageResource(imageId[currentPosition % imageId.length]); } else { Toast.makeText(getApplication(), "已经是第一张", Toast.LENGTH_SHORT).show(); } } if (downX - lastX > 100) { if (currentPosition < imageId.length - 1) { imageSwitcher.setInAnimation(AnimationUtils.loadAnimation( getApplication(), R.anim.right_in)); imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation( getApplication(), R.anim.lift_out)); currentPosition ; gallery.setSelection(currentPosition); Log.i("dony", "当前currentPosition=====" currentPosition); imageSwitcher.setImageResource(imageId[currentPosition]); } else { Toast.makeText(getApplication(), "到了最后一张", Toast.LENGTH_SHORT).show(); } } if (lastX == downX) { if (flag == false) { Log.i("dony", "flag========false"); galler_visble.setVisibility(View.VISIBLE); alphaImpl_in(v); flag = true; } else if (flag == true) { Log.i("dony", "flag========true"); galler_visble.setVisibility(View.GONE); alphaImpl_out(v); flag = false; } } } break; } return true; } @Override public View makeView() { final ImageView i = new ImageView(this); i.setBackgroundColor(0xff000000); i.setScaleType(ImageView.ScaleType.CENTER_CROP); i.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); return i; } // 设置淡入动画 public void alphaImpl_in(View v) { Animation animation = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); galler_visble.startAnimation(animation); } // 设置淡入动画 public void alphaImpl_out(View v) { Animation animation = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); galler_visble.startAnimation(animation); } }
标签: 图片浏览器
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论