热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现仿Windows7图片预览窗格效果

这篇文章主要为大家详细介绍了Android实现仿Windows7图片预览窗格效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本实例将显示类似于windows7提供的图片预览窗格效果,单击任意一张图片,可以在右侧显示该图片的预览效果。

效果如图所示:

具体实现方法:
res/layout/main.xml:

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
  
  
  
 

MainActivity:

package com.example.test; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.view.animation.AnimationUtils; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageSwitcher; 
import android.widget.ImageView; 
import android.widget.ViewSwitcher.ViewFactory; 
 
public class MainActivity extends Activity { 
 private int[] imageId=new int []{R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4, 
   R.drawable.img5,R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9}; 
 private ImageSwitcher imageSwitcher; 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
   
  imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher1);//获取图像切换器 
  //设置动画效果 
  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 imageView=new ImageView(MainActivity.this); 
    //设置保持纵横比居中缩放图像 
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    imageView.setLayoutParams(new ImageSwitcher.LayoutParams( 
      LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
    return imageView;//返回imageView对象 
   } 
  }); 
  imageSwitcher.setImageResource(R.drawable.img3);//设置默认显示的图像 
   
   
  GridView gridview=(GridView)findViewById(R.id.gridView1); 
  BaseAdapter adapter=new BaseAdapter(){ 
 
 
   @Override 
   public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView = null;//声明一个ImageView对象 
    if(cOnvertView==null){ 
     imageView=new ImageView(MainActivity.this);//实例化ImageView对象 
     /****************设置图像的宽度和高度*******************/ 
     imageView.setAdjustViewBounds(true); 
     imageView.setMaxWidth(150); 
     imageView.setMaxHeight(113); 
     /*********************************************************/ 
     imageView.setPadding(5, 5, 5, 5); 
    }else{ 
     imageView=(ImageView)convertView; 
    } 
    imageView.setImageResource(imageId[position]); 
    return imageView; 
   } 
    
   //功能:获得当前选项的id 
   @Override 
   public long getItemId(int position) { 
    return position; 
   } 
    
   //功能:获得当前选项 
   @Override 
   public Object getItem(int position) { 
    return position; 
   } 
    
   //获得数量 
   @Override 
   public int getCount() { 
    return imageId.length; 
   } 
  }; 
  gridview.setAdapter(adapter); 
  gridview.setOnItemClickListener(new OnItemClickListener() { 
 
 
   @Override 
   public void onItemClick(AdapterView<&#63;> parent, View view, int position, 
     long id) { 
     //显示选中的照片 
     imageSwitcher.setImageResource(imageId[position]); 
   } 
  }); 
 } 
} 

运行效果与开头描述相同,成功实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 浅谈Android五大布局——LinearLayout、FrameLayout和AbsoulteLa
    为什么80%的码农都做不了架构师?Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。 ... [详细]
  • 本文探讨了Java编程语言中常用的两个比较操作符==和equals方法的区别及其应用场景。通过具体示例分析,帮助开发者更好地理解和使用这两个概念,特别是在处理基本数据类型和引用数据类型的比较时。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文介绍了一个来自AIZU ONLINE JUDGE平台的问题,即清洁机器人2.0。该问题来源于某次编程竞赛,涉及复杂的算法逻辑与实现技巧。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文探讨了线性表中元素的删除方法,包括顺序表和链表的不同实现策略,以及这些策略在实际应用中的性能分析。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
author-avatar
孤独小舟9
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有