Android开发之简单的电子相册实现
电子相册的效果图和结构图:
图片资源的文件:
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;
}
}
请大家伙多多指教:
请关注:ailiandeziwei
Android开发之简单的电子相册实现的更多相关文章
- 让你Android开发更简单
转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...
- Android开发——打造简单的Viewpager指示器
准备工作: 1.两张不同颜色的小圆点图片,可以去阿里巴巴矢量图网站搜索 我把我使用的图片贴出来 2.一个简单的Viewpager的实现 下面是简单的Viewpager实现步骤: 1.布局文件使用Vie ...
- Android开发——打造简单的Viewpager指示器(小圆点指示器)
准备工作: 1.两张不同颜色的小圆点图片,可以去阿里巴巴矢量图网站搜索 我把我使用的图片贴出来 2.一个简单的Viewpager的实现 下面是简单的Viewpager实现步骤: 1.布局文件使用Vie ...
- 【Android开发】简单好用的阴影库 ShadowLayout
先来看一张使用 ShadowLayout 库实现的各种阴影的效果图,如下图所示: 如上图所示,通过使用 ShadowLayout 可以控制阴影的颜色.范围.显示边界(上下左右四个边界).x 轴和 y ...
- Android开发学习——简单类图
1.类A继承于类B (B 是父类,A是 子类) 2.小汽车.自行车 实现车的接口 3.A中有B这个成员变量,单向关联 4.聚合,整体与部分的关系.has-a B中的构造函数(或set方法)需要 ...
- Android开发实例-健康食谱应用(一)
转载请注明出处:http://blog.csdn.net/einarzhang/article/details/44774635 本系列文章的重点是如何使用Android开发一个简单的健康食谱软件.使 ...
- Android开发——Viewpager的介绍使用
目录: 一.Viewpager的简单介绍 二.简单的Viewpager使用 三.简单显示图片的Viewpager实现 四.广告图的实现及Viewpager指示器(小圆点)的实现 五.APP引导页的实现 ...
- Android开发网上的一些重要知识点[经验分享]
1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是s ...
- Android开发3:Intent、Bundle的使用和ListView的应用 、RelativeLayout(相对布局)简述(简单通讯录的实现)
前言 啦啦啦~博主又来骚扰大家啦~大家是不是感觉上次的Android开发博文有点长呢~主要是因为博主也是小白,在做实验的过程中查询了很多很多概念,努力去理解每一个知识点,才完成了最终的实验.还有就是随 ...
随机推荐
- Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 1
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 -- 新建微软实 ...
- 拥抱HTTP2.0时代 - HTTP2.0实现服务器端推送Push功能
在当今的移动互联开发趋势中,nghttp2是一个很值得大家去关注的一个开源项目. 我们在nghttpx模块中实现了HTTP/2服务器推送功能,并且在我们的nghttp2.org网站中启用了该推送功能. ...
- 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 ...
- Android最新支持包Design简介
Android 5.0 Lollipop是曾经最著名的Android发布之一,这样说很大一部分原因是材料设计的引入,而材料设计则是一种刷新了整个Android体验的设计语言.这个详细说明是开始适应材料 ...
- 2008技术内幕:T-SQL语言基础
2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...
- iOS 制作 framework 教程
直接看步骤 废话不多说,哈哈! 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除TestFrameWork对应的工程文件夹: 5:删除bulid ...
- C#大牛应该知道的一些知识
任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...
- Redis .NET开源组件Beetle.Redis
Redis .NET开源组件Beetle.Redis Beetle.Redis是一款开源的Redis Client for .net组件,它提供非常简便的操作方式可以让开发人员轻松地访问Redis,同 ...
- Web Builder
Web Builder http://www.doc88.com/p-1748774598960.html 初次接触Infopath,我就被它的强大的功能,灵活的表单制作方式,全面对Web Servi ...
- sequence diagram
[UML]UML系列——时序图(顺序图)sequence diagram 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.exte ...