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

             闲来没事,看到了关于这几个方面的小知识,记录下。

             下面是一个小例子。

 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,String,Office,System,import,internet)