安卓案例-图片浏览器

来源:互联网 发布:淘宝直播卖什么好 编辑:程序博客网 时间:2024/05/12 11:13

本例中的图片浏览器可以改变所查看的图片的透明度,可通过调用ImageView 的setImageAlpha方法来实现,不仅如此,这个图片浏览器还可以通过一个小区域来查看图片的原始大小,因此本案例定义两个ImageView ,一个用于查看图片整体,一个用于查看图片局部的细节。

本案例效果图如下

image

布局文件代码如下

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    tools:context="pub.weber.bym.imageview.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="horizontal"        android:gravity="center|top">        <Button            android:id="@+id/plus"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="增大透明度"/>        <Button            android:id="@+id/minus"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="减小透明度"/>        <Button            android:id="@+id/next"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="下一张"/>    </LinearLayout>    <ImageView        android:id="@+id/image1"        android:layout_width="wrap_content"        android:layout_height="280dp"        android:src="@drawable/b"        android:scaleType="fitCenter"/>    <ImageView        android:id="@+id/image2"        android:layout_width="120dp"        android:layout_height="120dp"        android:background="#00f"        android:layout_margin="10dp"/></LinearLayout>

MainActivity 代码如下

public class MainActivity extends AppCompatActivity {    // 图片数组    int [] images = new int[]{            R.drawable.a,            R.drawable.b,            R.drawable.c,            R.drawable.d    };    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 ImageView image1 = (ImageView) findViewById(R.id.image1);        final ImageView image2 = (ImageView) findViewById(R.id.image2);        final Button next = (Button) findViewById(R.id.next);        // 查看下张图片        next.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                image1.setImageResource(images[++currentImg % images.length]);            }        });        // 改变透明度方法        View.OnClickListener listener = new View.OnClickListener(){            @Override            public void onClick(View view){                if (view == plus){                    alpha += 20;                }                if (view == minus){                    alpha -= 20;                }                if (alpha >= 255){                    alpha = 255;                }                if (alpha <= 0){                    alpha = 0;                }                image1.setImageAlpha(alpha);            }        };        plus.setOnClickListener(listener);        minus.setOnClickListener(listener);        image1.setOnTouchListener(new View.OnTouchListener(){            @Override            public boolean onTouch(View view, MotionEvent event){                BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();                // 获取第一个图片显示框中的位图                Bitmap bitmap = bitmapDrawable.getBitmap();                // bitmap 图片实际大小与第一个 ImageView 的缩放比例                double scale = 1.0 * bitmap.getHeight() / image1.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;                }                // 显示图片的指定区域                image2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));                image2.setImageAlpha(alpha);                return false;            }        });    }}

by web开发者 更多相关内容请访问: http://weber.pub/

本文地址: http://weber.pub/安卓笔记18(案例)-图片查看器/327.html

0 0