易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
首页
/
操作系统
/
Linux
/
Android入门教程之Gallery
Android的Gallery控件是个很不错的看图控件,大大减轻了开发者对于看图功能的开发,而且效果也比较美观。本文介绍Gallery的用法,用反射机制来动态读取资源中的图片。
本文的效果图:
main.xml源码:
[xhtml]
<?xml
version
="1.0"
encoding
="utf-8"
?>
<LinearLayout
xmlns:android
="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
>
<Gallery
android:id
="@+id/gallery"
android:layout_height
="fill_parent"
android:layout_width
="fill_parent"
></Gallery>
</LinearLayout>
程序源码:
[java]
package
com.testImageView;
import
java.lang.reflect.Field;
import
java.util.ArrayList;
import
android.app.Activity;
import
android.content.Context;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.os.Bundle;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.AdapterView;
import
android.widget.BaseAdapter;
import
android.widget.Gallery;
import
android.widget.ImageView;
import
android.widget.AdapterView.OnItemClickListener;
public
class
testImageView
extends
Activity {
private
Gallery mGallery;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGallery = (Gallery)findViewById(R.id.gallery);
try
{
mGallery.setAdapter(
new
ImageAdapter(
this
));
}
catch
(IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mGallery.setOnItemClickListener(
new
OnItemClickListener() {
public
void
onItemClick(AdapterView parent, View v,
int
position,
long
id) {
testImageView.
this
.setTitle(String.valueOf(position));
}
});
}
/*
* class ImageAdapter is used to control gallery source and operation.
*/
private
class
ImageAdapter
extends
BaseAdapter{
private
Context mContext;
private
ArrayList<Integer> imgList=
new
ArrayList<Integer>();
private
ArrayList<Object> imgSizes=
new
ArrayList<Object>();
public
ImageAdapter(Context c)
throws
IllegalArgumentException, IllegalAccessException{
mContext = c;
//用反射机制来获取资源中的图片ID和尺寸
Field[] fields = R.drawable.
class
.getDeclaredFields();
for
(Field field : fields)
{
if
(!
"icon"
.equals(field.getName()))
//除了icon之外的图片
{
int
index=field.getInt(R.drawable.
class
);
//保存图片ID
imgList.add(index);
//保存图片大小
int
size[]=
new
int
[
2
];
Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index);
size[
0
]=bmImg.getWidth();size[
1
]=bmImg.getHeight();
imgSizes.add(size);
}
}
}
@Override
public
int
getCount() {
// TODO Auto-generated method stub
return
imgList.size();
}
@Override
public
Object getItem(
int
position) {
// TODO Auto-generated method stub
return
position;
}
@Override
public
long
getItemId(
int
position) {
// TODO Auto-generated method stub
return
position;
}
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView i =
new
ImageView (mContext);
//从imgList取得图片ID
i.setImageResource(imgList.get(position).intValue());
i.setScaleType(ImageView.ScaleType.FIT_XY);
//从imgSizes取得图片大小
int
size[]=
new
int
[
2
];
size=(
int
[]) imgSizes.get(position);
i.setLayoutParams(
new
Gallery.LayoutParams(size[
0
], size[
1
]));
return
i;
}
};
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图