zoukankan      html  css  js  c++  java
  • Bitmap图片查看器

      在Android 应用中使用assets目录下存放的资源文件,assets目录下存放的资源代表应用无法直接访问的原生资源,应用程序通过AssetManager以二 进制流的形式来读取资源。此应用是查看/assets/目录下的图片查看器(图片格式为:.jpg),在assets目录下放几张jpg格式的图片。

    1.MainActivity.java

    import java.io.IOException;
    import java.io.InputStream;
    
    import android.app.Activity;
    import android.content.res.AssetManager;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
        String[] images = null;
        AssetManager assets = null;
        int currentImge = 0;
        ImageView image;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            image = (ImageView) findViewById(R.id.imageBitmap);
    
            try {
                assets = getAssets();
                // 获取/assests/目录下的所有的文件
                images = assets.list("");
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            final Button next = (Button) findViewById(R.id.btnBitmap);
    
            next.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if (currentImge >= images.length) {
                        currentImge = 0;
                    }
    
                    // 找到下一个图片文件,这里使用jpg图片
                    while (!images[currentImge].endsWith(".jpg")) {
                        currentImge++;
                        // 如果发生数组越界
                        if (currentImge >= images.length) {
                            currentImge = 0;
                        }
                    }
    
                    InputStream assetFile = null;
    
                    try {
                        // 打开指定资源对应的输入流
                        assetFile = assets.open(images[currentImge++]);
    
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    BitmapDrawable bitmapDrawable = (BitmapDrawable) image
                            .getDrawable();
                    // 如果图片还未回收,先强制回收该图片
                    if (bitmapDrawable != null
                            && !bitmapDrawable.getBitmap().isRecycled()) {
                        bitmapDrawable.getBitmap().recycle();
                    }
                    // 该变现实的图片
                    image.setImageBitmap(BitmapFactory.decodeStream(assetFile));
    
                }
            });
        }
    }

    2.activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/btnBitmap"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nextPic" />
    
        <ImageView
            android:id="@+id/imageBitmap"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

       运行示例

  • 相关阅读:
    【HDOJ】2102 A计划
    this关键字
    static(静态、修饰符)
    手势抽取过程&代码复用
    Android:padding和android:layout_margin的区别
    平移动画
    读取系统联系人
    获取sim卡序列号
    图片选择器
    md5加密过程
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4518397.html
Copyright © 2011-2022 走看看