基本信息
源码名称:android 图片浏览器 完整实例源码下载
源码大小:4.56M
文件格式:.rar
开发语言:Java
更新时间:2014-05-13
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
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); } }