Android 学习笔记(十五):Activity-GalleryView
LogCat调测信息
在Window -> Show View -> Other... -> Android -> LogCat,这样将显示LogCat的窗口,对于System.out.print()以及Log.d(),可以打印出我们所需要的信息,例如:
System.out.print("Hello ---------------------/n");
Log.d("WEI","Hi ------------------1-----------");
Log.d("WEI","Hi -------------------2----------");
这样,我们在LogCat的查窗口,可以看到相关的信息。Log有5个级别,分别是v,d,i,w,e,使用Log.w类似方式调用。
GalleyView
Galley是画廊的意思,一般只在图片显示中使用,而且也不常用。
1)Android XML文件
<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Gallery>
由于Galley用户处理图片,因此处理item可采用ImageView,在设置adapter中,我们可以参见《Android 学习笔记(十三):Activity-GridView》中对BaseAdapter进行继承。
2)Java源代码
public class Chapter7Test8 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chapter_7_test8);//步骤1:和之前学习的一样,设置adapter来描述item的内容以及设置item的格式;通过setOnItemClickListener()设置点击触发的操作。
Gallery gallery = (Gallery)findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent,View v,int position,long id){
Toast.makeText(Chapter7Test8.this,""+position,Toast.LENGTH_SHORT).show();
}
});
}
//步骤2:adapter继承BaseAdapter,具体描述item。需要创建构造函数,具体化getCount(), getItem(), getItemId(), getView()。
private class ImageAdapter extends BaseAdapter{
private Context mContext;
private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6,
R.drawable.sample_7 }; //我们将名称为drawable_sample_1的图片文件,拷贝到drawable/下面。
public ImageAdapter(Context context){
mContext = context;
}public int getCount() {
return mImageIds.length;
}public Object getItem(int position) {
return position;
}public long getItemId(int position) {
return position;
}
//步骤3:每个item都是ImageView,通过setImageResource将图片呈现,设置每个item的大小,以及显示比例,这里,我们采用FIT_XY,根据X:Y将整个图片显示出来,如果X:Y和图片长:宽不一样,图片可能有些变形。
public View getView(int position, View convertView, ViewGroup parent) {
ImageView image = new ImageView(mContext);
image.setImageResource(mImageIds[position]);
image.setLayoutParams(new Gallery.LayoutParams(150,100));
image.setScaleType(ImageView.ScaleType.FIT_XY);
return image;
}
}
}
3)通过xml文件对item的格式进行设置
我们在res/values/下面增加一个xml文件,用于描述自定义widget的属性格式为
<resources>
<declare-styleable name="XXXX">
<attr name="AAAAA" format="BBBB"/>
<attr name="aaaaa" format="bbbb"/>
</declare-styleable>
</resources>
在R.java中将增加int R.styleable.XXXX[]来表示此定义,如果里面有2个属性,则有两个元素。在本例,设置style的属性,我们设置一个android已定义的属性galleryItembackground,它定义一个具有一个边框的gallery的item。如下:
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
获得自定义属性方式:
TypedArray a= obtainStyledAttributes(R.styleable.XXX/*int[]*/);
attrId = a.getResourceId(R.styleable.XXXX_AAAA,defaultId);//获得该属性的ID,如果没有发现该属性,则返回defaultId的值。
a.recyle(),//在使用obtainStyledAttributes()后应调用,是的可以被系统重用。
在这个例子中:
public ImageAdapter(Context context){
... ...
TypedArray a= obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();
}public View getView(int position, View convertView, ViewGroup parent) {
... ...
image.setBackgroundResource(mGalleryItemBackground);
... ...
}
相关链接:我的Andriod开发相关文章
Android 学习笔记(十五):Activity-GalleryView相关推荐
- Android学习笔记第五篇--网络连接与云服务(一)
Android学习笔记第五篇–网络连接与云服务 第一章.无线连接设备 除了能够在云端通讯,Android的无线API也允许在同一局域网内的设备通讯,**甚至没有连接网络,而是物理具体相近,也可以相 ...
- python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- windows内核开发学习笔记十五:IRP结构
windows内核开发学习笔记十五:IRP结构 IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...
- Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件
Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...
- IOS之学习笔记十五(协议和委托的使用)
1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...
- Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告
请看之前的:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 话不多说,直接上demo <!DOCTYPE html> <html lang="en"& ...
- 世界是有生命的(通向财富自由之路学习笔记十五)
最近因为工作调度的事情,有了一段空闲的日子,有比较多的时间来回望自己走过的路以及如何走好以后的路.之前忙得很少时间来写博文,很少时间来写读书笔记,逐渐将自己一些很好的习惯丢弃了.从今天起将重拾写博文的 ...
- 前端学习笔记(十五)
第十五章 HTML5新增标签 一.HTML5概述 1.简介 HTML5万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言的第五次大修改.HTML5将成为 HTML.XHTML ...
- Android学习笔记(五)——数据存储(二)SQLite和ContentProvider
3.SQLite 类SQLiteDatebase的实例代表了一个SQLite数据库,它的方法可以执行SQL语句.数据库对于一个应用是私有的,在一个应用中,数据库名也是唯一的. SQLiteOpenHe ...
- Android 学习笔记(十二):安卓中的事件分发机制
一.事件分发的对象是谁 答:点击事件(Touch事件) 定义 当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件.Touch事件的相关细节(发生触摸的位置.时间等)被封装成Mo ...
最新文章
- 人工智能AI和机器学习ML对量化交易领域的影响
- python代码怎么设置,如何设置PyCharm中的Python代码模版(推荐)
- Firefox 66 将自带自动屏蔽声音功能
- Linux 内存映射函数 mmap()函数笔记
- 1042:奇偶ASCII值判断
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- WiFi 802.11ax
- (十九)java多线程之ForkJoinPool
- Vmware虚拟机的安装和使用
- 信息学奥赛一本通 提高篇 第6章 平衡树Treap
- WEB安全基础-XSS基础
- wordpress获取当前登录用户信息的方法
- WinDBG脚本入门
- Altera下载器使用说明 Intel(Altera)FPGA高速下载器线PL-USB2-BLASTER中文详细使用手册
- 【学习笔记】贪心科技AI体验课
- DAOS 系统内部介绍(一)—— 概述
- ArcEngine10 ecp 授权
- 最安全的微信群管理工具推荐
- windows xp 自动登录
- [转] 人生“三重境界”和“四种大智慧”
热门文章
- 下面哪个对象能代表当前的HTML文件,GD:JAVA考试选择题
- 十六进制计算器 android,十六进制计算器
- 基于二叉链表的树结构相等的判断
- 徐州计算机应用宿舍,江苏徐州财经高等职业技术学校住宿条件
- ios查看帧率的软件_iOS开发-自己写一个实时显示fps帧数的小控件
- RN 开发遇到的问题之传参函数错误Invariant Violation: Maximum update depth exceeded.
- JavaScript中的加密解密
- 《深入浅出通信原理》学习(1-8)
- app--查看包名的五种常用方法
- java能开发winform程序吗_Java进击C#——应用开发之WinForm环境