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,这两个点击的时候都会有动画。
下面是一个小例子。
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,这两个点击的时候都会有动画。
相关文章推荐
- android textView WebView 两种方式 显示html 格式文本 带图片
- Android TextView中显示图片的4种方式
- 限制TextView文字现实的长度以及超长显示的方式
- 关于图片资源在android2.1/2.2/2.3下无法显示的问题以及解决方法
- 第六篇:在SOUI中用九宫格拉伸方式显示一个图片资源
- Unity3d-WWW实现图片资源显示以及保存和本地加载
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
- 在Android TextView中显示图片的4种方式详解
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
- java 通过流的方式读取远程图片并显示在jsp页面(类型以jpg、png等结尾的图片)
- EditText--在EditText中显示图片,控制光标的位置,以及操作光标位置的元素
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
- 用RecyclerView实现新闻列表页,包括头部的图片轮播,两种Item显示方式,下拉刷新和上拉加载以及限制列表的加载条目数
- VC.NET从资源中加载图片(jpg,png)并显示
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
- TextView显示带图片html的几种处理方式
- [WM C++]从资源文件中加载显示png/jpg图片
- java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)
- [WM C++]从资源文件中加载显示png/jpg图片
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题