热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android图片浏览器(二)——实现显示图片的标题

上一篇文章http:blog.csdn.netbadboy1110articledetails6879236只是单纯的显示一个图片,虽然我改进了,但是在

上一篇文章http://blog.csdn.net/badboy1110/article/details/6879236只是单纯的显示一个图片,虽然我改进了,但是在使用的时候还是有一些地方不足。所以再次重写,在原来的基础上实现了以下小特点:

1、可以显示标题:




2、原来的滑动速度非常快,这里给它的速度降低了。


主要是重写了Gallery。

废话少说,源码如下:

package cn.yj3g.GalleryTest2;import java.util.HashMap;import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewSwitcher;public class GalleryTestActivity extends Activity implements AdapterView.OnItemClickListener,ViewSwitcher.ViewFactory {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.image_switcher_1);mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);mSwitcher.setFactory(this);mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));Gallery g = (Gallery) findViewById(R.id.gallery);g.setAdapter(new ImageAdapter(this, mThumbIds.length));g.setOnItemClickListener(this);// g.setOnItemSelectedListener(this);g.setSelection(1);}public void onItemSelected(AdapterView parent, View v, int position, long id) {mSwitcher.setImageResource(mThumbIds[position % mImageIds.length]);}public void onNothingSelected(AdapterView parent) {}@Overridepublic View makeView() {Log.v("TAG", "makeView()");ImageView i = new ImageView(this);i.setBackgroundColor(0xFF000000);i.setScaleType(ImageView.ScaleType.FIT_CENTER);i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));return i;}private ImageSwitcher mSwitcher;public class ImageAdapter extends BaseAdapter {private int mGalleryItemBackground;private HashMap mViewMaps;private int mCount;private LayoutInflater mInflater;public ImageAdapter(Context c, int count) {this.mCount = count;mViewMaps = new HashMap(count);mInflater = LayoutInflater.from(GalleryTestActivity.this);// See res/values/attrs.xml for the that defines// Gallery1.TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);a.recycle();}public int getCount() {// return mImageIds.length;return Integer.MAX_VALUE;}public Object getItem(int position) {return position;}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {Log.v("TAG", "getView() position=" + position + " convertView=" + convertView);View viewGroup = mViewMaps.get(position%mCount);ImageView imageView = null;TextView textView = null;if(viewGroup==null) {viewGroup = mInflater.inflate(R.layout.gallery_item, null);imageView = (ImageView) viewGroup.findViewById(R.id.item_gallery_image);textView = (TextView) viewGroup.findViewById(R.id.item_gallery_text);imageView.setBackgroundResource(mGalleryItemBackground);mViewMaps.put(position%mCount, viewGroup);imageView.setImageResource(mImageIds[position % mImageIds.length]);textView.setText(titles[position % mImageIds.length]);} return viewGroup;}}private String[] titles = {"标题1","标题2","标题3","标题4","标题5","标题6","标题7","标题8",};private Integer[] mThumbIds = { R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2,R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6,R.drawable.sample_7 };private Integer[] mImageIds = { R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,R.drawable.sample_thumb_2, R.drawable.sample_thumb_3, R.drawable.sample_thumb_4,R.drawable.sample_thumb_5, R.drawable.sample_thumb_6, R.drawable.sample_thumb_7 };@Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) {mSwitcher.setImageResource(mThumbIds[position % mImageIds.length]);}}


重写的Gallery:

package cn.yj3g.view;import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Gallery;public class MyGallery extends Gallery
{public MyGallery(Context context, AttributeSet attrs){super(context, attrs);}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){// velocityX/3,这个参数是把速度将为原来的1/3return super.onFling(e1, e2, velocityX / 3, velocityY);}
}


Gallery的item:

gallery_item.xml




image_switcher_1.xml(这个是从android的API DEMO里面扒出来的 — —!)








推荐阅读
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 标题: ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • [翻译]PyCairo指南裁剪和masking
    裁剪和masking在PyCairo指南的这个部分,我么将讨论裁剪和masking操作。裁剪裁剪就是将图形的绘制限定在一定的区域内。这样做有一些效率的因素࿰ ... [详细]
  • 人脸检测 pyqt+opencv+dlib
    一、实验目标绘制PyQT界面,调用摄像头显示人脸信息。在界面中,用户通过点击不同的按键可以实现多种功能:打开和关闭摄像头, ... [详细]
  • HTC EVO 4G+手机存储(SD卡)中各个文件夹功能说明(转载)
      HTCRider/X515E/EVO4G+手机存储(SD卡)中各个文件夹功能说明  HTCRider/X515E/EVO4G+  1、.android_s ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。 ... [详细]
  • 注:根据Qt小神童的视频教程改编概论:利用最新的Qt5.1.1在windows下开发的一个小的时钟程序,有指针与表盘。1.Qtforwindows开发环境最新的Qt已经集 ... [详细]
  • 整个窗体当设置QT的窗体(QMainWindow,QDialog)时,直接用targetForm->setWindowOpacity()函数即可实现,效果为窗体及窗体内所有控件都透明化了。二、 ... [详细]
  • java unhandled,Eclipse编辑java文件报Unhandled event loop exception错误的解
    本人Eclipse版本是”eclipse-jee-kepler-SR2-win32-x86_64“昨天因为换电脑,所以重装了一下软件,装好eclipse ... [详细]
author-avatar
狗且偷生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有