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

图片资源的文件:

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. 从一道数学题弹程序员的思维:数学题,求证:(a+b%c)%c=(a+b)%c

    在学校论坛看到这道题目,全忘了的感觉. 如果你是高中的,那我觉得你完全没问题.但是,在这个博客园的圈子,觉得全部人都是程(ban)序(zhuan)员(gong)相关的人员,解决这个问题有点难度,毕竟, ...

  2. JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承

    说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...

  3. PHP 9: 表达式

    原文:PHP 9: 表达式 本章介绍PHP的表达式.PHP的表达式其实和其他语言没有什么区别.普通的赋值是表达式,函数也是表达式,通过函数赋值也是.三元条件运算符也是,即: $first ? $sec ...

  4. 全新通用编程语言 Def 招募核心贡献者、文档作者、布道师 deflang.org

    先给出官网地址:deflang.org 一句话简介:可扩展编程语言 Def 的目标是将 C++ 的高效抽象和 Lisp 的强大表现力融为一体. 你可以通过阅读 入门教程 .源码 或 测试用例 来简要或 ...

  5. ASP.NET DataTable的操作大全

    DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据需要独立创建和使用,最常见的情况是作为DataSet的成员使用,在这种情况下就需要用在 ...

  6. 【工作笔记三】非常全面的讲解Hosts文件

    原文:http://www.cnblogs.com/zgx/archive/2009/03/10/1408017.html 很奇怪有很多人不知道Hosts是什么东西.在网络病毒日渐盛行的今天,认识Ho ...

  7. TortoiseGit for windows安装与配置

    1. 下载地址 TortoiseGit与Language Packs下载: https://code.google.com/p/tortoisegit/wiki/Download?tm=2 msysg ...

  8. des和Rijndael加密

    ------------IV的作用: 为了保证数据的安全,.NET基类库中提供的私钥算法类使用称作密码块链(CBC,Cipher Block Chaining)的链模式,算法使用一个密钥和一个初始化向 ...

  9. 应该熟知的表单js应用(select、label、submit)

    前言  首先需要清楚的是,表单传数据方式,有POST和GET的方式,通过name和对应的value值提交到后台.通过name,可以用对象属性调用的方式获取对应的input标签,如: document. ...

  10. vstemplate关键点纪要

    创建Visual studio项目模板 vstemplate关键点纪要 经过多次的实验,终于完美生成一个.VSIX的项目模板安装包,其中遇到不少问题与挫折,久经google/baidu/自行摸索.终于 ...