以上代码都非常简单,没什么需要解释的,接着我们打开或新建activity_main.xml,作为程序的主布局文件,代码如下所示:android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:id="@+id/pic_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:clickable="true"
android:visibility="gone"
/>
可以看到,我们在activity_main.xml中放入了一个ListView,用于显示图片名称列表。然后又加入了一个ImageView,用于展示图片,不过一开始将ImageView设置为不可见,因为稍后要通过中轴旋转的方式让图片显示出来。
最后,打开或新建MainActivity作为程序的主Activity,代码如下所示:public class MainActivity extends Activity {
/**
* 根布局
*/
private RelativeLayout layout;
/**
* 用于展示图片列表的ListView
*/
private ListView picListView;
/**
* 用于展示图片详细的ImageView
*/
private ImageView picture;
/**
* 图片列表的适配器
*/
private PictureAdapter adapter;
/**
* 存放所有图片的集合
*/
private List picList = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
// 对图片列表数据进行初始化操作
initPics();
layout = (RelativeLayout) findViewById(R.id.layout);
picListView = (ListView) findViewById(R.id.pic_list_view);
picture = (ImageView) findViewById(R.id.picture);
adapter = new PictureAdapter(this, 0, picList);
picListView.setAdapter(adapter);
picListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
// 当点击某一子项时,将ImageView中的图片设置为相应的资源
picture.setImageResource(picList.get(position).getResource());
// 获取布局的中心点位置,作为旋转的中心点
float centerX = layout.getWidth() / 2f;
float centerY = layout.getHeight() / 2f;
// 构建3D旋转动画对象,旋转角度为0到90度,这使得ListView将会从可见变为不可见
final Rotate3dAnimation rotation = new Rotate3dAnimation(0, 90, centerX, centerY,
310.0f, true);
// 动画持续时间500毫秒
rotation.setDuration(500);
// 动画完成后保持完成的状态
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
// 设置动画的监听器
rotation.setAnimationListener(new TurnToImageView());
layout.startAnimation(rotation);
}
});
picture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 获取布局的中心点位置,作为旋转的中心点
float centerX = layout.getWidth() / 2f;
float centerY = layout.getHeight() / 2f;
// 构建3D旋转动画对象,旋转角度为360到270度,这使得ImageView将会从可见变为不可见,并且旋转的方向是相反的
final Rotate3dAnimation rotation = new Rotate3dAnimation(360, 270, centerX,
centerY, 310.0f, true);
// 动画持续时间500毫秒
rotation.setDuration(500);
// 动画完成后保持完成的状态
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
// 设置动画的监听器
rotation.setAnimationListener(new TurnToListView());
layout.startAnimation(rotation);
}
});
}
/**
* 初始化图片列表数据。
*/
private void initPics() {
Picture bird = new Picture("Bird", R.drawable.bird);
picList.add(bird);
Picture winter = new Picture("Winter", R.drawable.winter);
picList.add(winter);
Picture autumn = new Picture("Autumn", R.drawable.autumn);
picList.add(autumn);
Picture greatWall = new Picture("Great Wall", R.drawable.great_wall);
picList.add(greatWall);
Picture waterFall = new Picture("Water Fall", R.drawable.water_fall);
picList.add(waterFall);
}
/**
* 注册在ListView点击动画中的动画监听器,用于完成ListView的后续动画。
*
* @author guolin
*/
class TurnToImageView implements AnimationListener {
@Override
public void onAnimationStart(Animation animation) {
}
/**
* 当ListView的动画完成后,还需要再启动ImageView的动画,让ImageView从不可见变为可见
*/
@Override
public void onAnimationEnd(Animation animation) {
// 获取布局的中心点位置,作为旋转的中心点
float centerX = layout.getWidth() / 2f;
float centerY = layout.getHeight() / 2f;
// 将ListView隐藏
picListView.setVisibility(View.GONE);
// 将ImageView显示
picture.setVisibility(View.VISIBLE);
picture.requestFocus();
// 构建3D旋转动画对象,旋转角度为270到360度,这使得ImageView将会从不可见变为可见
final Rotate3dAnimation rotation = new Rotate3dAnimation(270, 360, centerX, centerY,
310.0f, false);
// 动画持续时间500毫秒
rotation.setDuration(500);
// 动画完成后保持完成的状态
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
layout.startAnimation(rotation);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}
/**
* 注册在ImageView点击动画中的动画监听器,用于完成ImageView的后续动画。
*
* @author guolin
*/
class TurnToListView implements AnimationListener {
@Override
public void onAnimationStart(Animation animation) {
}
/**
* 当ImageView的动画完成后,还需要再启动ListView的动画,让ListView从不可见变为可见
*/
@Override
public void onAnimationEnd(Animation animation) {
// 获取布局的中心点位置,作为旋转的中心点
float centerX = layout.getWidth() / 2f;
float centerY = layout.getHeight() / 2f;
// 将ImageView隐藏
picture.setVisibility(View.GONE);
// 将ListView显示
picListView.setVisibility(View.VISIBLE);
picListView.requestFocus();
// 构建3D旋转动画对象,旋转角度为90到0度,这使得ListView将会从不可见变为可见,从而回到原点
final Rotate3dAnimation rotation = new Rotate3dAnimation(90, 0, centerX, centerY,
310.0f, false);
// 动画持续时间500毫秒
rotation.setDuration(500);
// 动画完成后保持完成的状态
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
layout.startAnimation(rotation);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}
}
Android 图片预览 ImageView android实现图片浏览器
原创
©著作权归作者所有:来自51CTO博客作者蓝色忧郁花的原创作品,请联系作者获取转载授权,否则将追究法律责任
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JS选择图片获取base64编码预览图片
通过将图片转为data url的base64格式编码,实现直接预览图片
图片预览 base64 dataurl 图片转base64 -
android实现的图片浏览器 android开发图片浏览器
因为项目中需要用到所以实现的一个横向的照片浏览器,使用横向SrollView实现。实现效果如下:实现思路:在开始做之前呢,本着有轮子就用轮子的精神,也还是去百度找了很久,诸如"Android横向照片墙"、"Android横向照片流"、"Android横向照片选择器"…完全没有好咩。。查来查去都是那几篇竖向照片瀑布流的,横向的反正我是没找到。然后,在将郭神的《ndroid瀑布流照片墙实现,体验不规则
android实现的图片浏览器 Android横向照片墙 Android横向ScrollView 横向ScrollView 横向照片选择器 -
android超炫图片浏览器代码 android 图片浏览器
效果如下: 代码编写如下:Crize_demo\app\src\main\res\layout\activity_main.xml1 <!--定义一个线性布局-->2 <LinearLayout xmlns:android="http://schemas.android.com/apk/re
android超炫图片浏览器代码 Android简单图片浏览器 android xml java -
android 图片选择框架实现 android图片浏览器框架
目录1 4种常见图片框架1.1 ImageLoader 1.2 Picasso 1.3 Glide1.4 Fresco 2. 总结 Android开源的图片加载框架有很多,常见的ImageLoader、Picasso、Glide、Fresco;1 4种常见图片框架1.1
android 图片选择框架实现 Android图片缓存框架 Picasso 缓存 ide