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

图片资源的文件:

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. 3. SQL Server数据库状态监控 - 可用空间

    原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...

  2. C# 笔试题,看你会几道题

    1.       Which interface you need to implement to support for each? IEnumerator IEnumerable ICompare ...

  3. Fluent Validation

    .NET业务实体类验证组件Fluent Validation   认识Fluent Vaidation. 看到NopCommerce项目中用到这个组建是如此的简单,将数据验证从业务实体类中分离出来,真 ...

  4. Asterisk 未来之路3.0_0006

    原文:Asterisk 未来之路3.0_0006 Modules Asterisk 是基于模块构建的.一个模块提供某个特定的功能,它是动态的被装载.比如:信道驱动(chan_sip.so),或可以连接 ...

  5. js面向对象学习总结

    1.函数作为参数进行传递 function a(str,fun){ console.log(fun(str)) }; function up(str){ return str.toUpperCase( ...

  6. nagios 安装和配置(含有nrpe结束)所有 (两)

    二.ndoutils 安装: 1.mysql安装(若未安装) #apt-get install mysql-servermysql-client 2.DBI安装(若未安装) #cd /usr/loca ...

  7. javascript保留两位

    原文:javascript保留两位 //保留两位小数 //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x); if ( ...

  8. Bootstrap 模态框(也可以说的弹出层)

    最近在尝试使用bootstrap的模态框 使用模态框主要要引入一下几个js和css: bootstrap.css jquery.1.9.1.js(这个可以灵活选择) bootstrap.js html ...

  9. [置顶] 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!

    前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...

  10. 在winform中怎样实现好看的treeview样式

    这是在网上截取的一张图,就是想做成这样的效果,不能用devExperss控件,主要是不知道他的那个“组织机构列表“用的是不是panel,怎样弄的样式