package com.testgallery.test;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;
public class TestGallerActivity extends Activity {
private Gallery gallery;
private AnimationSet manimationSet;
private int[] imgs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
imgs=new int[]{R.drawable.a,R.drawable.c,R.drawable.b};
gallery = (Gallery)findViewById(R.id.gy_main);
ImageAdapter imgAdapter = new ImageAdapter(this,imgs);
gallery.setAdapter(imgAdapter);
gallery.setSelection(imgs.length/2);
gallery.setOnItemClickListener(listener);
}
int temp = 10;
private OnItemClickListener listener = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if(position != temp){
temp = position;
AnimationSet animationSet = new AnimationSet(true);
if(manimationSet!=null&&manimationSet!=animationSet){
// ScaleAnimation scaleAnimation = new ScaleAnimation(1,0.5f,1,0.5f,
// Animation.RELATIVE_TO_SELF,0.5f, //使用动画播放图片
// Animation.RELATIVE_TO_SELF,0.5f);
// scaleAnimation.setDuration(1000);
// manimationSet.addAnimation(scaleAnimation);
// manimationSet.setFillAfter(true); //让其保持动画结束时的状态。
// view.startAnimation(manimationSet);
if(null!=manimationSet)manimationSet.setFillAfter(false);
}
ScaleAnimation scaleAnimation = new ScaleAnimation(1f,1.5f,1f,1.5f,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
scaleAnimation.setDuration(1000);
animationSet.addAnimation(scaleAnimation);
animationSet.setFillAfter(true);
view.startAnimation(animationSet);
manimationSet = animationSet;
}else{
if(null!=manimationSet)manimationSet.setFillAfter(false);
}
}
};
class ImageAdapter extends BaseAdapter{
private Context ct;
private int[] data;
public ImageAdapter(Context ct,int[] data){
this.ct=ct;
this.data=data;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if(convertView==null){
ImageView img = new ImageView(ct);
img.setImageResource(data[position]);
view=img;
}else{
view=convertView;
}
return view;
}
}
}
分享到:
相关推荐
本篇将详细讲解如何实现一个具有循环滚动、选中放大功能,并且可以使用按键控制的`Gallery`。 首先,我们需要在布局文件中添加`Gallery`组件。`Gallery`的XML属性包括`android:id`用于标识控件,`android:layout_...
通过以上步骤,我们成功地实现了Android Gallery组件的循环滚动、图片选中放大以及左右按钮控制切换的功能,同时还为选中图片添加了弹出动画效果。在实际项目中,可能还需要根据具体需求进行优化,例如添加图片加载...
总的来说,这个“画廊”效果结合了RecyclerView的灵活性和强大的自定义能力,通过自定义ViewHolder、LayoutManager、Adapter和触摸事件处理,实现了选中item居中放大这一独特效果。这样的设计既提高了用户体验,也...
在这个回调中,我们需要获取选中的图片索引,并将该图片设置到`ImageSwitcher`中。 4. **动画设置**:为了让图片切换更流畅,我们可以在`ImageSwitcher`中设置动画效果。可以使用`setImageResource`或`...
画廊效果允许用户通过横向滑动来浏览多张图片,而“中间图片变大”则是一种增强用户体验的设计,它使得当前选中的图片在视觉上更加突出,给用户带来更强烈的沉浸感。以下将详细介绍实现这种效果的关键知识点。 1. *...
总结一下,要在Android的`Gallery`组件中实现选中放大的效果,主要步骤包括:创建`Gallery`布局,编写自定义适配器,重写`getView()`以处理点击事件并启动缩放动画。这种方法可以显著提升用户在浏览图片或联系人时的...
在图片画廊应用中,当用户点击`Gallery`中的图片时,`ImageSwitcher`可以用来展示被选中的图片,以全屏模式显示。你可以将`ImageSwitcher`设置为`ViewFlipper`的子类,并在`Gallery`的`onItemClick()`监听器中,根据...
本文将深入探讨如何实现对指定图片的多点触控缩放功能,以及如何利用gallery容器来存储和展示多张图片。 一、多点触控基础 多点触控(Multi-Touch)是指通过两个或更多个触点同时与屏幕进行交互的技术。在Android和...
本教程主要探讨如何实现一个带有水平滑动的GridView以及一个具备Gallery功能的HorizontalScrollView,并且介绍如何在ViewPage中支持图片缩放和网络图片的显示。 首先,让我们来看看“带水平滚动的GridView”。传统...
在Android开发中,`Gallery`控件是一种非常实用的组件,它主要用于展示一系列横向滑动的图片或视图,常用于相册应用、菜单选择等场景。本篇将详细讲解`Gallery`控件的使用方法,以及如何实现手动滑动效果。 首先,`...
在实际应用中,我们还可以添加监听器来处理用户滚动`Gallery`时的事件,例如获取当前选中的图片索引,或者执行相应的操作: ```java gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() { @...
当用户在`Gallery`中选择一个新项时,触发一个动画,让当前选中的图片以3D方式翻转到下一位置。你可以使用`ObjectAnimator`或者`ValueAnimator`来创建这种动画,改变图片的`rotationY`属性,模拟3D翻转。同时,为了...
尽管如此,开发者有时仍会根据需求自定义Gallery实现特定功能,例如在滑动时让当前选中的图片自动突出显示。这篇博客"自定义Gallery 滑动中图片自动突出显示"正是讨论了如何在旧版Gallery上实现这种效果。 首先,...
`Gallery`将用于显示所有可用图片的预览,而`ImageSwitcher`则用来显示当前选中的大图。 2. 给`Gallery`设置一个适配器(Adapter),这个适配器通常继承自`BaseAdapter`,并实现其中的方法如`getCount()`、`getItem...
最后,我们可以为`Gallery`添加一个`OnItemSelectedListener`监听器,以便在用户选择不同图片时执行相应操作,如显示选中图片的详细信息或者执行其他交互逻辑。 通过以上步骤,我们成功实现了Android `Gallery`组件...
在`Gallery`的`onItemSelected()`回调中,为当前选中的图片和即将选中的图片分别添加缩放动画。通过设置动画的开始和结束值,可以控制图片的放大和缩小效果。 5. **事件监听**: 设置`OnItemSelectedListener`监听...
2. **图片预览**:选中图片后,应用将以全屏模式展示图片细节,支持手势缩放和滑动操作。 3. **RAR文件处理**:除了常规图片格式外,应用还支持.rar文件的预览。通过集成第三方库,实现RAR文件的解压与浏览。 4. **...
2. **监听`Gallery`的选中事件**:使用`OnItemSelectedListener`监听用户选择的图片,获取选中项的索引。 3. **异步加载图片**:根据索引值从服务器或本地缓存中获取图片,使用异步加载库加载图片到`ImageSwitcher`...
例如,当页面向左滑动时,可以将当前页面缩小并稍微旋转,同时将下一个页面放大并反向旋转,这样就能呈现出3D翻页的效果。 接下来,我们要将`ViewPager`的滑动与`Gallery`组件关联起来。`Gallery`是一个横向滚动的...