Android图片转换器代码分享

 更新时间:2015年10月29日 11:58:43   投稿:hebedich  
本文给大家总结了下在安卓程序中进行图片转换的方法,非常的实用,小伙伴们可以参考下。

MainActivity.java

package com.zhang.showPhoto;
 
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
 
public class MainActivity extends Activity {
   
  private int[] imagId=new int[]{
      R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04,
      R.drawable.img05,R.drawable.img06,R.drawable.img07,R.drawable.img08,
      R.drawable.img09,R.drawable.img10
    };
  private int index=0;
  private ImageSwitcher imageSwitcher;
  private Button up,down;
   
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
     
    up=(Button) findViewById(R.id.bt1);
    down=(Button) findViewById(R.id.bt2);
     
   
    imageSwitcher=(ImageSwitcher) findViewById(R.id.imagSw1);
    imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
    imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
    imageSwitcher.setFactory(new ViewFactory() {
       
     
      public View makeView() {
        ImageView imageView = new ImageView(MainActivity.this);
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
        imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
            LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT
            ));
        return imageView;
      }
    });
     
    imageSwitcher.setImageResource(imagId[index]);
     
    up.setOnClickListener(new OnClickListener() {
       
      @Override
      public void onClick(View v) {
        if(index>0){
          index--;
        }else{
          index=imagId.length-1;
        }
        imageSwitcher.setImageResource(imagId[index]);
      }
    });
     
    down.setOnClickListener(new OnClickListener() {
       
      @Override
      public void onClick(View v) {
        if(index<imagId.length-1){
          index++;
        }else{
          index=0;
        }
        imageSwitcher.setImageResource(imagId[index]);
      }
    });
   
  }
   
 
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/bg1"
  android:id="@+id/llayout"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:orientation="horizontal" >
 
  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="上一张"
    android:id="@+id/bt1"
    />
  <ImageSwitcher
     android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imagSw1"
    android:layout_gravity="center"
    />
   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="下一张"
    android:id="@+id/bt2"
    />
 
</LinearLayout>

再来看一段代码

    // 获取图片的宽高
    BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inJustDecodeBounds = true;
    try{
      bitmapIn = BitmapFactory.decodeFile(Puzzle.user.CUSTOM_IMAGE[customImage], opt);
    }catch(Exception e){
      if(D) Log.d(TAG,"error");
      return;
    }
    int in_w=opt.outWidth,in_h=opt.outHeight;
     
    // 获取imageview的尺寸 注意imageview的宽高比要与原图相同 否则需要另行计算
    full_w = imageview.getWidth()
    full_h = getHeight()
 
    // 计算缩放比例 带有四舍五入
    int Size_rate=(in_w*in_h*10)/(full_w*full_h);
    if(Size_rate>10){
      Size_rate+=5; 
      Size_rate/=10;
    }else{
      Size_rate=1;
    }
 
    // 重新设置opt 读取图片文件
    opt.inSampleSize=Size_rate;
    opt.inJustDecodeBounds = false;
    opt.inScaled = false;
 
    opt.outWidth=full_w;
    opt.outHeight=full_h;
    bitmapIn = BitmapFactory.decodeFile(Puzzle.user.CUSTOM_IMAGE[customImage], opt);}

相关文章

  • Spring条件注解@ConditionnalOnClass的原理分析

    Spring条件注解@ConditionnalOnClass的原理分析

    这篇文章主要介绍了Spring条件注解@ConditionnalOnClass的原理分析,所谓@ConditionalOnClass注解,翻译过来就是基于class的条件,它为所标注的类或方法添加限制条件,当该条件的值为true时,其所标注的类或方法才能生效,需要的朋友可以参考下
    2023-12-12
  • SpringMVC通过拦截器实现IP黑名单

    SpringMVC通过拦截器实现IP黑名单

    这篇文章主要为大家详细介绍了SpringMVC通过拦截器实现IP黑名单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • java中 == 与 equal 的区别讲解

    java中 == 与 equal 的区别讲解

    这篇文章介绍了java中 == 与 equal 的区别,有需要的朋友可以参考一下
    2013-10-10
  • 使用restTemplate.postForEntity()的问题

    使用restTemplate.postForEntity()的问题

    这篇文章主要介绍了使用restTemplate.postForEntity()的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java中@JSONField注解用法、场景与实践详解

    Java中@JSONField注解用法、场景与实践详解

    这篇文章主要给大家介绍了关于Java中@JSONField注解用法、场景与实践的相关资料,并结合实际应用场景,帮助开发者在项目中更高效地处理JSON数据,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • Java中使用Thread类和Runnable接口实现多线程的区别

    Java中使用Thread类和Runnable接口实现多线程的区别

    这篇文章主要介绍了使用Thread类和Runnable接口实现多线程的区别,本文给大家介绍了两种实现方式的步骤,除了以上两种多线程实现方式,还可以使用 Callable 接口实现,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    Quartz 是一个功能强大的调度库,可以在 Java 应用中用于执行定时任务,本文将介绍如何在 Spring 框架下配置 Quartz 集群,并使用 MySQL 作为数据源来存储调度信息,文中有详细的代码供大家参考,需要的朋友可以参考下
    2025-01-01
  • java类加载机制、类加载器、自定义类加载器的案例

    java类加载机制、类加载器、自定义类加载器的案例

    这篇文章主要介绍了java类加载机制、类加载器、自定义类加载器的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • mybatis plus or and 的合并写法实例

    mybatis plus or and 的合并写法实例

    这篇文章主要介绍了mybatis plus or and 的合并写法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 详解SpringCloud LoadBalancer 新一代负载均衡器

    详解SpringCloud LoadBalancer 新一代负载均衡器

    这篇文章主要为大家介绍了SpringCloud LoadBalancer新一代负载均衡器详解使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论