您的位置:首页 > 移动开发 > Android开发

Android ImageSwitcher、TextSwitcher以及以比较节省资源的方式显示jpg图片小例子

2011-12-02 15:45 429 查看
闲来没事,看到了关于这几个方面的小知识,记录下。

下面是一个小例子。

import java.io.InputStream;

import java.util.ArrayList;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Color;

import android.os.Bundle;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.view.animation.AnimationUtils;

import android.widget.ImageSwitcher;

import android.widget.ImageView;

import android.widget.TextSwitcher;

import android.widget.TextView;

import android.widget.ViewSwitcher.ViewFactory;

public class TestImageSwitcherActivity extends Activity {

private int index;

private TextSwitcher mTextSwitcher;

private ImageSwitcher mImageSwitcher;

private ImageView mImageView;

private ArrayList<Bitmap> ab=new ArrayList<Bitmap>();

// 文字数组

private String[] texts={"莫许杯深琥珀浓,","未成沈醉意先融,","疏钟己应晚来风。",

"瑞脑香消魂梦断,","辟寒金小髻鬟松,","醒时空对烛花红。"};

// 图片数组

private int[] images={R.drawable.bg_light,R.drawable.button_bg,R.drawable.button_bg_over,R.drawable.button_favorites,

R.drawable.button_internet,R.drawable.button_office,R.drawable.button_play,R.drawable.button_system};

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

/**设置程序无状态栏且全屏*/

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.main);

testImageSwitcher();

testJPG();

testTextSwitcher();

}

/**ImageSwitcher的使用*/

private void testImageSwitcher(){

mImageSwitcher=(ImageSwitcher)findViewById(R.id.imageswither);

//实现并设置工厂内部接口的makeView方法,用来显示视图。

mImageSwitcher.setFactory(new ViewFactory(){

@Override

public View makeView() {

// TODO Auto-generated method stub

return new ImageView(TestImageSwitcherActivity.this);

}

});

mImageSwitcher.setImageResource(images[index]);

//设置点击监听器

mImageSwitcher.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//点击会切换图片

index++;

if (index >= images.length) {

index = 0;

}

mImageSwitcher.setImageResource(images[index]);

}

});

//设置切入动画,调用android本身的动画

mImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(),

android.R.anim.slide_in_left));

//设置切出动画

mImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(),

android.R.anim.slide_out_right));

}

/**jpg图像以省资源的方式显示*/

private void testJPG(){

mImageView=(ImageView)findViewById(R.id.imageview);

mImageView.setImageBitmap(getAB().get(4));

}

/**

* TextSwitcher

*/

private void testTextSwitcher(){

mTextSwitcher=(TextSwitcher)findViewById(R.id.textswitcher);

//定义视图显示工厂,并设置

mTextSwitcher.setFactory(new ViewFactory() {

@Override

public View makeView() {

TextView tv =new TextView(TestImageSwitcherActivity.this);

tv.setTextSize(32);

tv.setTextColor(Color.GREEN);

return tv;

}

});

// 设置文字来源

mTextSwitcher.setText(texts[index]);

// 设置点击监听器

mTextSwitcher.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 点击会切换图片

index++;

if (index >= texts.length) {

index = 0;

}

mTextSwitcher.setText(texts[index]);

}

});

//设置切入动画,调用android本身的动画

mTextSwitcher.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(),

android.R.anim.slide_in_left));

//设置切出动画

mTextSwitcher.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(),

android.R.anim.slide_out_right));

}

/**

* 以最省资源的方式读取本地资源图片

* @param context

* @param resId

* @return

*/

public static Bitmap readBitMap(Context context, int resId){

BitmapFactory.Options opt = new BitmapFactory.Options();

opt.inPreferredConfig = Bitmap.Config.RGB_565;

opt.inPurgeable = true;

opt.inInputShareable = true;

//获取资源图片

InputStream is = context.getResources().openRawResource(resId);

return BitmapFactory.decodeStream(is,null,opt);

}

private ArrayList<Bitmap> getAB(){

ab.add(readBitMap(this,R.drawable.imge1));

ab.add(readBitMap(this,R.drawable.imge2));

ab.add(readBitMap(this,R.drawable.imge3));

ab.add(readBitMap(this,R.drawable.imge4));

ab.add(readBitMap(this,R.drawable.imge5));

ab.add(readBitMap(this,R.drawable.imge6));

ab.add(readBitMap(this,R.drawable.imge7));

ab.add(readBitMap(this,R.drawable.imge8));

return ab;

}

}

上一个程序起来的图片,中间的一个图片是jpg格式的。上面的是imageswitcher,最下面是textswitcher,这两个点击的时候都会有动画。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: