Android开发实现的图片浏览功能示例【放大图片】
程序员文章站
2023-09-03 23:27:40
本文实例讲述了android开发实现的图片浏览功能。分享给大家供大家参考,具体如下:
效果图:
布局文件:
本文实例讲述了android开发实现的图片浏览功能。分享给大家供大家参考,具体如下:
效果图:
布局文件:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity" android:orientation="vertical"> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <button android:id="@+id/plus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="增加透明度" android:layout_weight="1"/> <button android:id="@+id/minus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="减少透明度" android:layout_weight="1"/> <button android:id="@+id/next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下一张" android:layout_weight="1"/> </linearlayout> <!--此处显示图片整体--> <imageview android:id="@+id/imagel" android:layout_width="wrap_content" android:layout_height="280dp" android:src="@drawable/xiaochouyu" android:scaletype="fitcenter"/> <imageview android:id="@+id/image2" android:layout_width="200dp" android:layout_height="200dp" android:background="#00f" android:layout_margin="5dp"/> </linearlayout>
代码实现透明度改变:
public class mainactivity extends appcompatactivity { //定义一个访问图片的数组 int[] images = new int[]{ r.drawable.xiaochouyu , r.drawable.leidayu , r.drawable.paodangyu , r.drawable.huangjindiao , r.drawable.piaopiao }; //定义默认显示的图片 int currentimg = 2 ; //定义图片初始透明度 private int alpha = 255 ; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); final button plus = (button) findviewbyid(r.id.plus) ; final button minus = (button) findviewbyid(r.id.minus) ; final button next = (button) findviewbyid(r.id.next) ; final imageview imageview01 = (imageview) findviewbyid(r.id.imagel); final imageview imageview02 = (imageview) findviewbyid(r.id.image2); //定义查看下一张图片的监听器 next.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //显示下一张图片 imageview01.setimageresource(images[currentimg++ % images.length]); } }); //定义改变图片透明度的方法 view.onclicklistener listener = new view.onclicklistener() { @requiresapi(api = build.version_codes.jelly_bean) @override public void onclick(view v) { if (v == plus){ alpha = alpha + 20 ; } if (v == minus){ alpha = alpha - 20 ; } if (alpha >= 255){ alpha = 255 ; } if (alpha <= 0){ alpha = 0 ; } imageview01.setimagealpha(alpha); } }; //为两个按钮添加监听器 plus.setonclicklistener(listener); minus.setonclicklistener(listener); imageview01.setontouchlistener(new view.ontouchlistener() { @requiresapi(api = build.version_codes.jelly_bean) @override public boolean ontouch(view v, motionevent event) { bitmapdrawable bitmapdrawable = (bitmapdrawable) imageview01.getdrawable(); //获取第一个托片显示框中的位图 bitmap bitmap = bitmapdrawable.getbitmap(); //bitmap图片实际大小与第一个imageview的缩放比例 double scale = 1.0 * bitmap.getheight() / imageview01.getheight(); //获取需要显示的图片开始点 int x = (int) (event.getx() * scale); int y = (int) (event.gety() * scale); if (x + 120 > bitmap.getwidth()){ x = bitmap.getwidth() - 120 ; } if (y + 120 > bitmap.getheight()){ y = bitmap.getheight() - 120 ; } //显示图片的指定区域 imageview02.setimagebitmap(bitmap.createbitmap(bitmap , x , y , 120 , 120)); imageview02.setimagealpha(alpha); return false; } }); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。