android ImageView

在ANDROID 疯狂讲义书上看到的例子

图片浏览器,可以通过setalpha方法改变透明度

首先先准备五张图片,我现在drawable里面粘贴了五张taylor的图片(多爱偶像啊,写代码也想着她)害羞


在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:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.sybil.imageviewdemo.MainActivity">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/but01"
            android:text="@string/increaseap"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/but02"
        android:text="@string/decreaseal"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/but03"
        android:text="@string/next"/>

</LinearLayout>

    <ImageView
        android:id="@+id/img01"
        android:layout_width="fill_parent"
        android:layout_height="178dp"
        android:adjustViewBounds="true"
        android:src="@drawable/taylor01" />

    <ImageView
        android:id="@+id/img02"
        android:layout_width="fill_parent"
        android:layout_height="178dp"
        android:background="#0df"
        android:src="@drawable/taylor02" />
</LinearLayout>




在MainActivity.java中,

package com.example.sybil.imageviewdemo;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.AppCompatActivity;
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 {
    //定义一个访问图片的数组
    int[] images=new int[]{
            R.drawable.taylor01,
            R.drawable.taylor02,
            R.drawable.taylor03,
            R.drawable.taylor04,
            R.drawable.taylor05,
    };
    //定义默认显示的图片
    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.but01);//返回一个View对象,强制类型转为Button
        final Button minus= (Button) findViewById(R.id.but02);
        final ImageView image1= (ImageView) findViewById(R.id.img01);
        final ImageView image2= (ImageView) findViewById(R.id.img02);
        final Button next= (Button) findViewById(R.id.but03);
        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //控制ImageView显示下一张图片
                image1.setImageResource(images[++currentImg%images.length]);
            }
        });
        //定义改变图片透明度的方法
        View.OnClickListener listener=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(v==plus){//vview对象,plusbutton对像
                    alpha+=20;
                }
                if(v==minus){
                    alpha-=20;
                }
                if(alpha>=255){
                    alpha=255;
                }
                if(alpha<=0){
                    alpha=0;
                }
                //改变图片的透明度
                image1.setAlpha(alpha);
            }
        };
        //为两个按钮添加监听器
        plus.setOnClickListener(listener);
        minus.setOnClickListener(listener);
        image1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                BitmapDrawable bitmapDrawable= (BitmapDrawable) image1.getDrawable();
                //获取第一个图片显示框的位图
                Bitmap bitmap=bitmapDrawable.getBitmap();
                //bitmap图片实际大小与第一个ImageView的缩放比例
                double scale=bitmap.getWidth()/320.0;
                //获取需要显示的图片的开始点
                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.setAlpha(alpha);
                return false;
            }
        });

    }
}

书上说:

粗体部分的的代码段会从源位图的触碰点截取源代码,并将截取部分 显示在第二个imageview中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值