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

作者:光仔December 时间:2022-10-14 01:48:04 

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

效果如图所示:

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

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


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout1"
>
<GridView android:id="@+id/gridView1"
 android:layout_height="match_parent"
 android:layout_width="440px"
 android:layout_marginTop="10px"
 android:horizontalSpacing="3px"
 android:verticalSpacing="3px"
 android:numColumns="3"/>
<!-- 添加一个图像切换器 -->
<ImageSwitcher
 android:id="@+id/imageSwitcher1"
 android:padding="10px"
 android:layout_width="match_parent"
 android:layout_height="match_parent"/>
</LinearLayout>

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<?> parent, View view, int position,
    long id) {
    //显示选中的照片
    imageSwitcher.setImageResource(imageId[position]);
  }
 });
}
}

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

来源:http://blog.csdn.net/acmman/article/details/45041127

标签:Android,Windows7,预览,窗格
0
投稿

猜你喜欢

  • Android实现闪光灯效果

    2023-08-02 12:20:06
  • elasticsearch java客户端action的实现简单分析

    2022-04-25 05:39:45
  • SpringMVC bean加载控制的实现分析

    2023-08-08 18:46:19
  • c#远程html数据抓取实例分享

    2023-07-03 12:50:49
  • 在AOP中Spring生成代理类的两种方式

    2023-12-08 19:13:36
  • Android 双击返回键退出程序的方法总结

    2023-12-05 16:41:18
  • 解析Java中未被捕获的异常以及try语句的嵌套使用

    2022-10-18 20:03:48
  • Android自定义View之自定义评价打分控件RatingBar实现自定义星星大小和间距

    2023-03-14 04:30:16
  • Android SDK Manager更新、下载速度慢问题解决办法

    2023-10-25 06:03:18
  • Android Studio轻松构建自定义模板的步骤记录

    2023-07-19 01:11:51
  • C#实现对数组进行随机排序类实例

    2023-06-22 19:04:26
  • Android实现拼图小游戏

    2023-03-01 11:25:46
  • Unity实现主角移动与摄像机跟随

    2023-09-14 09:32:05
  • Java 中HashCode作用_动力节点Java学院整理

    2021-12-08 12:26:55
  • 人脸认证源码faceIdentify详解

    2023-05-19 09:57:25
  • WPF实现3D翻牌式倒计时特效

    2021-11-11 16:08:21
  • Java数据结构之稀疏数组的实现与应用

    2023-12-04 22:46:41
  • spring-redis-session 自定义 key 和过期时间

    2022-03-29 14:34:37
  • Unity3D实现分页系统

    2022-06-28 22:53:37
  • Spring JPA find单表查询方法示例详解

    2022-11-03 19:43:38
  • asp之家 软件编程 m.aspxhome.com