简单的图片浏览器制作

例子中的图片浏览器既可以改变图片的透明度,也可以根据用户在图片上选定的某一区域,对其进行显示,用于查看图片的局部细节

在activity_main.xml中:

<?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:orientation="vertical"    android:layout_height="match_parent"    tools:context=".MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:gravity="center">        <Button            android:id="@+id/btn1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="增大透明度"            android:layout_marginLeft="60dp"/>        <Button            android:id="@+id/btn2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="降低透明度" />        <Button            android:id="@+id/btn3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:layout_marginRight="60dp"            android:text="下一张" />    </LinearLayout>    <ImageView        android:id="@+id/image1"        android:layout_width="400dp"        android:layout_height="280dp"        android:layout_gravity="center"        android:src="@drawable/zm1"        android:scaleType="fitCenter"/>    <ImageView        android:id="@+id/image2"        android:layout_width="120dp"        android:layout_height="120dp"        android:background="#f0f"        android:layout_margin="10dp"/></LinearLayout>

在MainActivity.java中:

package com.example.test02;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {//    定义访问图片的数组    private int[] images=new int[]{R.drawable.zm1,R.drawable.zm2,R.drawable.zm6,            R.drawable.zm4,R.drawable.zm5};//    定义默认显示的图片    private int current=2;//    定义图片的初始透明度    private int alpha=255;    private Button btn1,btn2,btn3;    private ImageView image1,image2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn1=findViewById(R.id.btn1);        btn2=findViewById(R.id.btn2);        btn3=findViewById(R.id.btn3);        image1=findViewById(R.id.image1);        image2=findViewById(R.id.image2);        //定义查看下一张图片的监听器        btn3.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                image1.setImageResource(images[++current%images.length]);            }        });//        为按钮添加监听器        btn1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //定义改变图片透明度的方法                if (v==btn1){                    alpha+=20;                }                if (alpha>=255){                    alpha=255;                }                if (alpha<=0){                    alpha=0;                }                //改变图片的透明度                image1.setImageAlpha(alpha);            }        });        btn2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (v==btn2){                    alpha-=20;                }                if (alpha>=255){                    alpha=255;                }                if (alpha<=0){                    alpha=0;                }                image1.setImageAlpha(alpha);            }        });        image1.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                BitmapDrawable bitmapDrawable= (BitmapDrawable) image1.getDrawable();//                获取第一个图片显示框中的位图                Bitmap bitmap=bitmapDrawable.getBitmap();//                实际大小与第一张图片的缩放比例                double scale=1.0*bitmap.getHeight()/image1.getHeight();//                获取需要显示图片的开始点                long x=Math.round(event.getX()*scale);                long y=Math.round(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,(int)x,(int)y,120,120));                image2.setImageAlpha(alpha);                return false;            }        });    }}

希望这些代码对你有所帮助,关注我,有惊喜哦~~~

更多相关文章

  1. 定义自己的ViewGroup
  2. 解析Android中使用自定义字体的实现方法
  3. android CheckBox RadioButton 照片和文字的间距问题
  4. Android(安卓)Volley使用之二:Volley请求网络图片
  5. 动态的修改自定义custom title
  6. ios开发答疑录系列​---(一)Android和IOS图片编码之跨平台传递
  7. Android之GridView视图实现
  8. android paint画笔 设置透明度setAlpha及 canvas画布
  9. Android获取View的内容图片

随机推荐

  1. 关于相对布局RelativeLayout的各种属性
  2. Android仿微信实现下拉列表
  3. Android Activity onNewIntent() 详解
  4. Android NDK编程浅入深出之--了解NDK
  5. Android实现九宫格
  6. android 集成腾讯bugly版本升级功能
  7. android 定时器的实现
  8. Android:EditText屏蔽输入法弹窗
  9. 学习心得(二)
  10. eclipse 配置android sdk和maven