Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 的 Gallery 的簡單使用

android 的 Gallery 的簡單使用

編輯:關於Android編程

Gallery 的用法很簡單,百度一下一大堆。現在就結合1個效果的例子。

\


這個效果其實很簡單,設置未被選中的項,的透明度 周圍的看起來就會有點模糊<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+YW5kcm9pZDp1bnNlbGVjdGVkQWxwaGE9"0.5"

設置好每個item的間隔

android:spacing="15dip"

每個item 的樣子 就需要自己設置。比如利用 渲染器等各種效果

實現思路就是 在 onItemSelected 中監聽 選中狀態 動態的去改變 每個item的樣子



部分代碼:

public class BitmapUtil {

   
	public static Bitmap createTxtImage(String txt, int txtSize) {

    	/**
    	 * 未選中的 item 進行字體的設置
    	 */
        Bitmap btimap = Bitmap.createBitmap(txt.length() * txtSize + 6,
                txtSize + 6, Config.ARGB_8888);
        Canvas canvas = new Canvas(btimap);
        Paint p = new Paint();
        p.setAntiAlias(true);
        p.setColor(Color.WHITE);
        p.setTextSize(txtSize);
        canvas.drawText(txt, 3, txtSize - 3, p);
        return btimap;

    }

    
    
    /**
     * 圖片倒影的效果
     */  
    public static Bitmap createReflectedImage(Bitmap bitmap) {
        
        //中間
    	final int reflectionGap = 0 ;
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        
        //整個 bitmap
        Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
                (height + height/2 + 20 ), Config.ARGB_8888);
        
        Matrix matrix = new Matrix();
        matrix.preScale(1, -1);
        Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 
        		          0 , height / 2, width , height / 2, matrix, false);
        
        Canvas canvas = new Canvas(bitmapWithReflection);
            //正面的
            canvas.drawBitmap(bitmap,0 , 20, null);
	        // draw 倒影
	        Paint  defaultPaint = new Paint();
	        canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
	        canvas.drawBitmap(reflectionImage, 0, height + reflectionGap + 20 , null);
    
        
        
        Paint paint = new Paint();
       
        //線性渲染器
        LinearGradient shader = new LinearGradient(0,
        		bitmap.getHeight()+30, 0, bitmapWithReflection.getHeight()
                             + reflectionGap,0x70ffffff, 0x00ffffff, TileMode.CLAMP);

        paint.setShader(shader);
       
        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
        canvas.drawRect(0, height + 20, width, bitmapWithReflection.getHeight()
                                                              + reflectionGap, paint);

        return bitmapWithReflection;

    }

}


adapter

public class GalleryAdapter extends BaseAdapter{

 
    public View getView(int position, View convertView, ViewGroup parent) {

        ImageView imageView = new ImageView(context);
        	
        	  if (select == position) {
                  Entity en = entity_list.get(position % entity_list.size());           
                  imageView.setImageBitmap(BitmapUtil.createReflectedImage(BitmapUtil
                                .createTxtImage(en.getName(), 30)));

              } else {

              	  Entity en  = entity_list.get(position % entity_list.size());
                  imageView.setImageBitmap(BitmapUtil.createTxtImage(en.getName(),
                          25));
              }
        	  
        return imageView;
    }
}

public class MyGalleryWight extends Gallery {


    public MyGalleryWight(Context context, AttributeSet attrs) {

        super(context, attrs);
    }
    
    // 這個是為了不讓他一下滑動好多  你也可以不重寫這個方法
    public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    	return false;

    }


}
主要訪法

	@Override
		public void onItemSelected(AdapterView arg0, View view, int position,
				long arg3) {
			// TODO Auto-generated method stub
			adapter.notifyDataSetChanged(position);//arg2會返回當前選中項的位置,調用此方法,通知更新
		}

代碼: http://download.csdn.net/detail/kongbaidepao/6640881



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved