Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)

使用简单图片

使用Drawable对象

bitmap和BitmapDrawable对象

package peng.liu.test;

import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ClipDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends Activity{
    String[] images;
    ImageView image;
    int currentImg;
    AssetManager asset;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image = (ImageView) findViewById(R.id.imageBit);
        try{
            asset = getAssets();
            images = asset.list("");
        }catch (Exception e){
            e.printStackTrace();
        }
        findViewById(R.id.btnBit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (currentImg >= images.length){
                    currentImg = 0;
                }
                while (!images[currentImg].endsWith(".png")&&!images[currentImg].endsWith(".jpg")&&!images[currentImg].endsWith(".gif")){
                    currentImg++;
                    if (currentImg >= images.length){
                        currentImg = 0;
                    }
                    InputStream assetFile = null;
                    try{
                        assetFile = asset.open(images[currentImg++]);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                    BitmapDrawable drawable = (BitmapDrawable) image.getDrawable();
                    if (drawable != null && !drawable.getBitmap().isRecycled()){
                        drawable.getBitmap().recycle();
                    }
                    image.setImageBitmap(BitmapFactory.decodeStream(assetFile));
                }
            }
        });
    }
}
时间: 2024-08-08 16:01:05

Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)的相关文章

调用android自带的json类解析出错!!!

============问题描述============ {"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"2","temp2":"15","weather":"小到中雨转小雨","img1":"

Android广播接收器Broadcast Receiver-android学习之旅(十二)

首先继承BroadcastReceiver类,并在manifest中注册 public class MyReceiver extends BroadcastReceiver { public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); }

Android的RadioButton和checkBox的用法-android学习之旅(十九)

RadioButton和checkBox简介 单选按钮(RadioButton)和复选框(CheckBox)都继承了Button,因此属性的设置和Button差不多,只是加了一个android:chencked属性. 用来设置是否被选中. RadioButton和checkBox的区别 前者如果一组只能只能选中一个,一次通常会与RadioGroup一块使用,后者没有限制. 实例 <LinearLayout xmlns:android="http://schemas.android.com/

【转】 Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference

目录(?)[-] XML文件 在设备中保存 读出信息 ListPreference提供单选列表,我们可以通过CheckBoxPreference提供多选列表.此外,Android在3.0后提供MultiSelectListPreference,它的实现和ListPreference相似,不同的是还可以不选择或者多个选择.如图所示. XML文件 在复合例子中加入相关的内容,如下.同样地可以采用@array来对entry和entryvalue进行定义,使用比CheckBox Preference要方

android布局-android学习之旅(十六)

简介 相对布局的组件是由兄弟组件和父组价决定的,因此这种布局被称为相对布局. 属性设置介绍 RelativeLayout.Layoutparam中只能设置为true和false的属性是: 需要依赖其他组件Id设置的属性: 除此之外,RelativeLayout还可以使用viewGroup.MarginLayoutparams的属性. 梅花布局的实例 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android

android布局-android学习之旅(十五)

TableLayout 表格布局 tablelayout简介 表格布局有TableLayout代表,但是它的本质定义仍然是线性管理器.表格布局采用行和列来管理UI,但是不需要明确的定义多少行,多少列,而是通过添加TableRow,没添加一个TableRow,就添加一行,TableRow中每添加一个组件就是一列. TableLayout属性 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android四大组件之一Service介绍-android学习之旅(十二)

基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService启动并把绑定该组件进行通信. 使用场景 后台下载文件,以及播放音乐等 注意 service运行在主线程中,他不会创建属于自己的线程,也不是运行在独立的线程中,所以在使用的时候,需要自己创建线程,而不应该直接使用,这样会造成ANR错误. service的两种形式 started service 其他组

Android 9Patch图片的使用-android学习之旅(十八)

9patch的使用方法 9patch图片常被用来做消息发送等的图片,只是缩放照片的部分区域,使得图片的整体形状不会受到影响,比较方便. 下面我们介绍一下: 在android的SDK安装目录下的tools目录下,可以找到draw9patch.bat文件,只需要点击就可以了. 左侧和上部的直线负责缩放区域,右侧和下策的直线,负责内容显示.

Android 自定义View-android学习之旅(十四)

自定义View的步骤 当andoid提供的系统组件不满足要求时候,完全可以集成View来派生自定义组件. 首定定义一个继承View的子类,然后重写他一个或几个方法. 重写的方法介绍 构造器:这是定制View最基本的方式,当用java代码创建或者从xml文件读取都需要用到该方法. onFinishInflate()这是一个回调方法,当应用从xml布局文件加载该组件,并利用它来构造界面后,会调用这个方法. onMeasure():改方法检测View组件以及它包含的组件大小. onLayout():需