Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
2011-12-07 11:50
1196 查看
前言
我们现在在随便一个手机上用手指在屏幕上滑来滑都可以去拖动图片,其实在Android里这很简单,下面我就给大家具体讲解一下。
思路
我们首先需要Gallery这个对象,俗称画廊对象,大家都知道画廊吧,在现实生活中画廊里面放置的都是一个个画家画的具体的画,画廊有了,还需要什么呢?还需要的就是一幅幅具体的画了,具体的画其实就是ImageView对象了。如何把画好的画填充到画廊上呢?这里就需要一个填充器了,就是BaseAdapter。
实现步骤
一:布局文件编写
1.1:布局文件main.xml
<?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_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
二:代码文件编写
package com.menglin.gallery;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
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
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//加载布局文件main.xml
setContentView(R.layout.main);
//通过findViewById()方法得到Gallery对象
Gallery gallery = (Gallery)findViewById(R.id.gallery);
//添加一个ImageAdapter并设置给Gallery
gallery.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter
{
private Context context;
//使用系统的图标图片作为图库源
private int[] imageids=
{
android.R.drawable.btn_minus,
android.R.drawable.btn_radio,
android.R.drawable.ic_lock_idle_low_battery,
android.R.drawable.btn_radio,
android.R.drawable.btn_dialog
};
//构造函数 此构造函数只有一个参数就是要存数的Context
public ImageAdapter(Context c)
{
this.context = c;
}
//得到已定义的图片的总数量
public int getCount()
{
return imageids.length;
}
//得到目前容器中图片的数组
public Object getItem(int position)
{
return position;
}
//得到目前容器中图片的数组ID
public long getItemId(int position)
{
return position;
}
//取得目前欲显示的图片view,传入数组ID使之读取成图像
public View getView(int position, View convertView, ViewGroup parent)
{
//创建一个ImageView对象
ImageView imageview = new ImageView(context);
//设置图片给ImageView对象
imageview.setImageResource(imageids[position]);
//重新设置图片的宽高
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
//重新设置Layout的宽高
imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
return imageview;
}
//根据距离中央的位移量,利用getScale()返回view的大小
public float getScale(boolean focused,int offset)
{
return Math.max(0, 1.0f/(float)Math.pow(2, Math.abs(offset)));
}
}
}
运行效果如下
我们用手指从右向左拖动
我们现在在随便一个手机上用手指在屏幕上滑来滑都可以去拖动图片,其实在Android里这很简单,下面我就给大家具体讲解一下。
思路
我们首先需要Gallery这个对象,俗称画廊对象,大家都知道画廊吧,在现实生活中画廊里面放置的都是一个个画家画的具体的画,画廊有了,还需要什么呢?还需要的就是一幅幅具体的画了,具体的画其实就是ImageView对象了。如何把画好的画填充到画廊上呢?这里就需要一个填充器了,就是BaseAdapter。
实现步骤
一:布局文件编写
1.1:布局文件main.xml
<?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_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
二:代码文件编写
package com.menglin.gallery;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
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
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//加载布局文件main.xml
setContentView(R.layout.main);
//通过findViewById()方法得到Gallery对象
Gallery gallery = (Gallery)findViewById(R.id.gallery);
//添加一个ImageAdapter并设置给Gallery
gallery.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter
{
private Context context;
//使用系统的图标图片作为图库源
private int[] imageids=
{
android.R.drawable.btn_minus,
android.R.drawable.btn_radio,
android.R.drawable.ic_lock_idle_low_battery,
android.R.drawable.btn_radio,
android.R.drawable.btn_dialog
};
//构造函数 此构造函数只有一个参数就是要存数的Context
public ImageAdapter(Context c)
{
this.context = c;
}
//得到已定义的图片的总数量
public int getCount()
{
return imageids.length;
}
//得到目前容器中图片的数组
public Object getItem(int position)
{
return position;
}
//得到目前容器中图片的数组ID
public long getItemId(int position)
{
return position;
}
//取得目前欲显示的图片view,传入数组ID使之读取成图像
public View getView(int position, View convertView, ViewGroup parent)
{
//创建一个ImageView对象
ImageView imageview = new ImageView(context);
//设置图片给ImageView对象
imageview.setImageResource(imageids[position]);
//重新设置图片的宽高
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
//重新设置Layout的宽高
imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
return imageview;
}
//根据距离中央的位移量,利用getScale()返回view的大小
public float getScale(boolean focused,int offset)
{
return Math.max(0, 1.0f/(float)Math.pow(2, Math.abs(offset)));
}
}
}
运行效果如下
我们用手指从右向左拖动
相关文章推荐
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- 举例说明android中Bitmap、ListView以及ImageView的综合使用---显示图片并获取图片的宽和高
- Android深入浅出系列之实例应用—具有自动提示的菜单应用AutoCompleteTextView和ArrayAdapter的使用
- Android开发之ButterKnife,GreenDao简单运用,以及推荐并使用一个好用的开源库BaseRecyclerViewAdapterHelper。
- Android深入浅出系列之实例应用—具有自动提示的菜单应用AutoCompleteTextView和ArrayAdapter的使用
- Android深入浅出系列之实例应用—具有自动提示的菜单应用AutoCompleteTextView和ArrayAdapter的使用
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用
- Android中使用GridView和ImageViewSwitcher实现电子相册简单功能实例
- 使用ListView和AsyncTask、fastjson解析Json以及适配器BaseAdapter来实现下载网络的图片以及文字并显示出来
- Android深入浅出系列之实例应用—同意协议CheckBox的使用
- Android:BaseAdapter优化之ViewHolder 显示系统已经安装应用并打开
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- Android深入浅出系列之实例应用—同意协议CheckBox的使用
- Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
- Android深入浅出系列之实例应用—提示信息Toast对象的使用
- 【Android 开发】:UI控件之显示图片控件 ImageView 的使用方法
- Android使用webview调用系统浏览器以及项目内显示并支持图片和输入
- Android手机开发:ImageView使用和从内存读取图片显示