电子相册的效果图和结构图:

图片资源的文件:

package com.example.electronicalbum;

public interface ImageResource {
  //用一个Integer数组保存图像资源
 Integer[] dImageID={
 R.drawable.a, 
 R.drawable.b,
 R.drawable.c,
 R.drawable.d,
 R.drawable.e, 
 R.drawable.f,
 
 };
}

布局的文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bj"
    >
  
  
<Gallery android:id="@+id/gallery"   
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content">  
</Gallery>  
   
<ImageView android:id="@+id/imageView"  
    android:layout_height="fill_parent"  
    android:layout_width="fill_parent">  
</ImageView>

</LinearLayout>

提到的string.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">电子相册</string>
    <string name="action_settings">Settings</string>
 
 <declare-styleable name="Gallery1">  
        <attr name="android:galleryItemBackground" />  
    </declare-styleable>  
     <declare-styleable name="LabelView">  
        <attr name="text" format="string" />  
        <attr name="textColor" format="color" />  
        <attr name="textSize" format="dimension" />  
    </declare-styleable> 
</resources>

最主要的代码和注释:希望对大家有帮助:

package com.example.electronicalbum;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class MainActivity extends Activity {
      //用来显示单个图像
  private ImageView imageOne;
  
 //用来显示所有的图像
  private ImageView imageAll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageOne = (ImageView) findViewById(R.id.imageView);
//新建一个Gallery类,这是是实现拖动效果的关键   
       //Gallery is 一个用来水平卷动显示对象的视图  
Gallery gallery = (Gallery) findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter(this));
}
//实现ImageResource接口获得自己创建的图像资源
class ImageAdapter extends BaseAdapter implements ImageResource{
//每一个gallery中图像的背景资源   
   private int galleryItemBackground; 
   private Context context;

public ImageAdapter(Context context) {  
       this.context = context;
       //这里实现的功能上就是上半部分每个图像那个背景框
       // 对应的xml文件就是attr.xml
       TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
       galleryItemBackground = a.getResourceId( R.styleable.Gallery1_android_galleryItemBackground, 0);  
            a.recycle();

}
@Override
public int getCount() {

return dImageID.length;
}

@Override
public Object getItem(int position) {

return position;
}

@Override
public long getItemId(int position) {
//将此索引的图像设为imageOne显示   
imageOne.setImageResource(ImageAdapter.dImageID[position]);   
             imageOne.setScaleType(ImageView.ScaleType.FIT_CENTER);
return position; 
}
 //这个方法返回的ImageView就是实现拖动效果的图像 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
imageAll = new ImageView(context);
//设置图像源
imageAll.setImageResource(dImageID[position]);
//设置视图为120*120
imageAll.setLayoutParams(new Gallery.LayoutParams(125,125));
//设置图像相对于视图的比例,FIT_XY表示充满X和Y轴   
          imageAll.setScaleType(ImageView.ScaleType.FIT_XY);  
        //设置imageAll中每一个Item的背景资源 
          imageAll.setBackgroundResource(galleryItemBackground);
return imageAll;
}
 
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

请大家伙多多指教:

邮箱:weimingweicom@sina.com

请关注:ailiandeziwei

Android开发之简单的电子相册实现的更多相关文章

  1. 让你Android开发更简单

    转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...

  2. Android开发——打造简单的Viewpager指示器

    准备工作: 1.两张不同颜色的小圆点图片,可以去阿里巴巴矢量图网站搜索 我把我使用的图片贴出来 2.一个简单的Viewpager的实现 下面是简单的Viewpager实现步骤: 1.布局文件使用Vie ...

  3. Android开发——打造简单的Viewpager指示器(小圆点指示器)

    准备工作: 1.两张不同颜色的小圆点图片,可以去阿里巴巴矢量图网站搜索 我把我使用的图片贴出来 2.一个简单的Viewpager的实现 下面是简单的Viewpager实现步骤: 1.布局文件使用Vie ...

  4. 【Android开发】简单好用的阴影库 ShadowLayout

    先来看一张使用 ShadowLayout 库实现的各种阴影的效果图,如下图所示: 如上图所示,通过使用 ShadowLayout 可以控制阴影的颜色.范围.显示边界(上下左右四个边界).x 轴和 y ...

  5. Android开发学习——简单类图

    1.类A继承于类B    (B 是父类,A是 子类) 2.小汽车.自行车 实现车的接口 3.A中有B这个成员变量,单向关联 4.聚合,整体与部分的关系.has-a  B中的构造函数(或set方法)需要 ...

  6. Android开发实例-健康食谱应用(一)

    转载请注明出处:http://blog.csdn.net/einarzhang/article/details/44774635 本系列文章的重点是如何使用Android开发一个简单的健康食谱软件.使 ...

  7. Android开发——Viewpager的介绍使用

    目录: 一.Viewpager的简单介绍 二.简单的Viewpager使用 三.简单显示图片的Viewpager实现 四.广告图的实现及Viewpager指示器(小圆点)的实现 五.APP引导页的实现 ...

  8. Android开发网上的一些重要知识点[经验分享]

    1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是s ...

  9. Android开发3:Intent、Bundle的使用和ListView的应用 、RelativeLayout(相对布局)简述(简单通讯录的实现)

    前言 啦啦啦~博主又来骚扰大家啦~大家是不是感觉上次的Android开发博文有点长呢~主要是因为博主也是小白,在做实验的过程中查询了很多很多概念,努力去理解每一个知识点,才完成了最终的实验.还有就是随 ...

随机推荐

  1. Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 1

    Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 -- 新建微软实 ...

  2. 拥抱HTTP2.0时代 - HTTP2.0实现服务器端推送Push功能

    在当今的移动互联开发趋势中,nghttp2是一个很值得大家去关注的一个开源项目. 我们在nghttpx模块中实现了HTTP/2服务器推送功能,并且在我们的nghttp2.org网站中启用了该推送功能. ...

  3. ext日期加减任意天数

    1.Ext.util.Format.date(new Date().add(Date.DAY, 5), 'Y-m-d'), 'Y-m-d') 2.Ext.util.Format.date(new Da ...

  4. Android最新支持包Design简介

    Android 5.0 Lollipop是曾经最著名的Android发布之一,这样说很大一部分原因是材料设计的引入,而材料设计则是一种刷新了整个Android体验的设计语言.这个详细说明是开始适应材料 ...

  5. 2008技术内幕:T-SQL语言基础

    2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...

  6. iOS 制作 framework 教程

    直接看步骤 废话不多说,哈哈! 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除TestFrameWork对应的工程文件夹: 5:删除bulid ...

  7. C#大牛应该知道的一些知识

    任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...

  8. Redis .NET开源组件Beetle.Redis

    Redis .NET开源组件Beetle.Redis Beetle.Redis是一款开源的Redis Client for .net组件,它提供非常简便的操作方式可以让开发人员轻松地访问Redis,同 ...

  9. Web Builder

    Web Builder http://www.doc88.com/p-1748774598960.html 初次接触Infopath,我就被它的强大的功能,灵活的表单制作方式,全面对Web Servi ...

  10. sequence diagram

    [UML]UML系列——时序图(顺序图)sequence diagram 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.exte ...