Android ImageShow的使用方法(2)【转】
2010-05-19 15:17 Alex77Lee 阅读(748) 评论(0) 编辑 收藏 举报
Java代码
1. < alpha xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@anim/decelerate_interpolator"
3. android:fromAlpha="0.0" android:toAlpha="1.0"
4. android:duration="@android:integer/config_longAnimTime" / >
< alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_longAnimTime" / >
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.ViewAnimator
↳ android.widget.ViewSwitcher
↳ android.widget.TextSwitcher
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.ViewAnimator
↳ android.widget.ViewSwitcher
↳ android.widget.ImageSwitcher
TextSwitcher与ImageSwitcher差不多,不过ImageSwitcher规定的view为ImageView,而 TextSwitcher为 TextView。(这个在public View makeView()这个里面设置)。若是ImageSwitcher则在makeView()里面定义的是IamgeView并且将其返回给 IamgeSwitcher, 而TextSwitcher则在makeView里面定义的是TextView并且将其返回给TextSwitcher.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先来看Demo中view包下面的ImageSwitcher1.java,这个DEMO实现的效果就是在Activity下面有一个小的图片索引 列表,用鼠标点击列表中任意一个图片便可以对该图片进行显示,在每次显示图片的时候总有一个渐变的动画效果。首先来看下它的布局文件:
< ?xml version="1.0" encoding="utf-8"? >
< RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
< ImageSwitcher android:id="@+id/switcher"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" / >
< Gallery android:id="@+id/gallery" android:background="#55000000"
android:layout_width="fill_parent" android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="center_vertical" android:spacing="16dp" / >
< /RelativeLayout >
在这个布局文件里,外层的大的RelativeLayout包含了两个控件:分别是ImageSwithcer和Gallery。 ImageSwithcer是用来图片显示那块区域的控件,Gallery是来控制底下那个图标索引列表索引用的。
在ImageSwitcher1.java中,requestWindowFeature(Window.FEATURE_NO_TITLE)是使得 这个 Activity没有titlebar,进而这个图片显示区域会增大。Gallery这个类和ListView这个类用起来差不多,也是要利用 setAdapter来进行资源的设置。这里对BaseAdapter进行了封装,这里通过getView这个函数来返回要显示的那个ImageView 的。如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(105,105));
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(0,0,0,0);
imageView.setImageResource(mThumbIds[position]);
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
getView方法里动态生成一个ImageView,然后利用setLayoutParams ,setImageResource和setBackgroundResource分别设定要图片大小,图片源文件和图片背景。当图片被显示到当前屏幕的 时候这个函数就会被自动回调来提供要显示的ImageView。下面就来说说ImageSwitcher,在ImageSwitcher1中实现了 ViewSwitcher.ViewFactory这个接口,这个接口里有个方法makeView,来看下这个方法:
public View makeView() {
ImageView i = new ImageView(this);
i.setBackgroundColor(0xFF000000);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
return i;
}
这个方法为ImageSwitcher返回了一个View。ImageSwitcher调用过程是这样的,首先要有一个Factory为它提供一个 View,然后ImageSwitcher就可以初始化各种资源了。
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
注意在使用一个ImageSwitcher之前,一定要调用setFactory方法,要不setImageResource这个方法会报空指针异 常。 ImageSwitcher的切换效果就是由上面最后两句实现的,这里的setInAnimation是资源被读入到这个ImageSwitcher的时 候动画,setOutAnimation是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果,这里所有的动画都是从 android.R系统文件里读取的。
ImageSwitcher就说到这里,TextViewSwitcher和ImageSwitcher用法大同小异,下面介绍下怎样自己写 Animation。
在view包中的Animation2这个类使用了一些自己写的Animation,这些Animation也是一些xml文件,下面便是一例:
< set xmlns:android="http://schemas.android.com/apk/res/android" >
< translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300"/ >
< alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" / >
< /set >
Translate 这个标签里说明字体相对于控件的高度由原来高度的100%变换到0%。Alpha是设定转换时候的透明位,如果从ImageSwitcher里消失的话透 明位就从1.0到0.0,如果是进入时的动画,那么透明位就从0.0变换到1.0。这个Animation是竖向的,同样fromXDelta和 toXDelta这个属性可以进行横向动画的设定。大家可以写些例子来看看这些Animation的各种效果。 阅读全文
类别:android教程 查看评论
1. < alpha xmlns:android="http://schemas.android.com/apk/res/android"
2. android:interpolator="@anim/decelerate_interpolator"
3. android:fromAlpha="0.0" android:toAlpha="1.0"
4. android:duration="@android:integer/config_longAnimTime" / >
< alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_longAnimTime" / >
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.ViewAnimator
↳ android.widget.ViewSwitcher
↳ android.widget.TextSwitcher
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.ViewAnimator
↳ android.widget.ViewSwitcher
↳ android.widget.ImageSwitcher
TextSwitcher与ImageSwitcher差不多,不过ImageSwitcher规定的view为ImageView,而 TextSwitcher为 TextView。(这个在public View makeView()这个里面设置)。若是ImageSwitcher则在makeView()里面定义的是IamgeView并且将其返回给 IamgeSwitcher, 而TextSwitcher则在makeView里面定义的是TextView并且将其返回给TextSwitcher.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先来看Demo中view包下面的ImageSwitcher1.java,这个DEMO实现的效果就是在Activity下面有一个小的图片索引 列表,用鼠标点击列表中任意一个图片便可以对该图片进行显示,在每次显示图片的时候总有一个渐变的动画效果。首先来看下它的布局文件:
< ?xml version="1.0" encoding="utf-8"? >
< RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
< ImageSwitcher android:id="@+id/switcher"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" / >
< Gallery android:id="@+id/gallery" android:background="#55000000"
android:layout_width="fill_parent" android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="center_vertical" android:spacing="16dp" / >
< /RelativeLayout >
在这个布局文件里,外层的大的RelativeLayout包含了两个控件:分别是ImageSwithcer和Gallery。 ImageSwithcer是用来图片显示那块区域的控件,Gallery是来控制底下那个图标索引列表索引用的。
在ImageSwitcher1.java中,requestWindowFeature(Window.FEATURE_NO_TITLE)是使得 这个 Activity没有titlebar,进而这个图片显示区域会增大。Gallery这个类和ListView这个类用起来差不多,也是要利用 setAdapter来进行资源的设置。这里对BaseAdapter进行了封装,这里通过getView这个函数来返回要显示的那个ImageView 的。如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(105,105));
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(0,0,0,0);
imageView.setImageResource(mThumbIds[position]);
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
getView方法里动态生成一个ImageView,然后利用setLayoutParams ,setImageResource和setBackgroundResource分别设定要图片大小,图片源文件和图片背景。当图片被显示到当前屏幕的 时候这个函数就会被自动回调来提供要显示的ImageView。下面就来说说ImageSwitcher,在ImageSwitcher1中实现了 ViewSwitcher.ViewFactory这个接口,这个接口里有个方法makeView,来看下这个方法:
public View makeView() {
ImageView i = new ImageView(this);
i.setBackgroundColor(0xFF000000);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
return i;
}
这个方法为ImageSwitcher返回了一个View。ImageSwitcher调用过程是这样的,首先要有一个Factory为它提供一个 View,然后ImageSwitcher就可以初始化各种资源了。
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
注意在使用一个ImageSwitcher之前,一定要调用setFactory方法,要不setImageResource这个方法会报空指针异 常。 ImageSwitcher的切换效果就是由上面最后两句实现的,这里的setInAnimation是资源被读入到这个ImageSwitcher的时 候动画,setOutAnimation是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果,这里所有的动画都是从 android.R系统文件里读取的。
ImageSwitcher就说到这里,TextViewSwitcher和ImageSwitcher用法大同小异,下面介绍下怎样自己写 Animation。
在view包中的Animation2这个类使用了一些自己写的Animation,这些Animation也是一些xml文件,下面便是一例:
< set xmlns:android="http://schemas.android.com/apk/res/android" >
< translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300"/ >
< alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" / >
< /set >
Translate 这个标签里说明字体相对于控件的高度由原来高度的100%变换到0%。Alpha是设定转换时候的透明位,如果从ImageSwitcher里消失的话透 明位就从1.0到0.0,如果是进入时的动画,那么透明位就从0.0变换到1.0。这个Animation是竖向的,同样fromXDelta和 toXDelta这个属性可以进行横向动画的设定。大家可以写些例子来看看这些Animation的各种效果。 阅读全文
类别:android教程 查看评论