Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android:漫畫APP開發筆記之ListView中圖片按屏幕寬度縮放

Android:漫畫APP開發筆記之ListView中圖片按屏幕寬度縮放

編輯:關於Android編程

一、listview

    

其中,
 android:divider="#00000000"
設置列表項的間隔顏色透明,
android:listSelector="#00000000"
設置點擊圖片時無背景色(透明色,不用系統背景色)


二、piclist_item

  
      

三、PicListInfo

package com.cartoon.adapters;

import android.graphics.Bitmap;

public class PicListInfo {
	private Bitmap PicUrl;   //圖片地址
	//下面是上面屬性的get和set方法

	public Bitmap getPicUrl() {
		return PicUrl;
	}

	public void setPicUrl(Bitmap picUrl) {
		PicUrl = picUrl;
	}
	
}

四、PicListAdapter
package com.cartoon.adapters;

import java.util.ArrayList;

import com.cartoon.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class PicListAdapter extends ArrayAdapter{
	
	public PicListAdapter(Context context, int textViewResourceId, ArrayList objects)
	{
		super(context, textViewResourceId, objects);
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder =null;
		View view;
		WindowManager wm = (WindowManager) getContext()
                .getSystemService(Context.WINDOW_SERVICE);
                int width = wm.getDefaultDisplay().getWidth();
		
                if (convertView == null) {
	        view = LayoutInflater.from(getContext()).inflate(R.layout.piclist_item, null);	
                //設置圖片的尺寸
		holder = new ViewHolder();
		holder.piclist_item = (ImageView)view.findViewById(R.id.piclist_item);     	        
		ViewGroup.LayoutParams margin = new ViewGroup.LayoutParams(holder.piclist_item.getLayoutParams());
	          RelativeLayout.LayoutParams layoutParams  = new RelativeLayout.LayoutParams(margin);
layoutParams.height = (int) (width*0.5677);//設置圖片的高度
layoutParams.width = width; //設置圖片的寬度
layoutParams.setMargins(15, 0, 15, 0);
holder.piclist_item.setLayoutParams(layoutParams);
holder.piclist_item.setScaleType(ImageView.ScaleType.FIT_START); view.setTag(holder);} else {view = convertView;holder = (ViewHolder)convertView.getTag();} final PicListInfo singleoder = getItem(position); if (singleoder != null) {holder.piclist_item.setImageBitmap(singleoder.getPicUrl()); }return view;}public class ViewHolder{public ImageView piclist_item;}}


使用listview+adapter遇到了表項高度的問題,通用的方法只將圖片顯示在每個表項左邊的狹小區域中。而項目要求圖片與屏幕等寬、高度按照比例縮放,因此先獲取屏幕寬度

		WindowManager wm = (WindowManager) getContext()
                .getSystemService(Context.WINDOW_SERVICE);

                int width = wm.getDefaultDisplay().getWidth();
                int height = wm.getDefaultDisplay().getHeight();
再調整圖片尺寸,注釋已經寫的比較清楚:

                holder.piclist_item = (ImageView)view.findViewById(R.id.piclist_item);     	        
		ViewGroup.LayoutParams margin9 = new ViewGroup.LayoutParams(holder.piclist_item.getLayoutParams());
	          RelativeLayout.LayoutParams layoutParams  = new RelativeLayout.LayoutParams(margin);
layoutParams.height = (int) (width*0.5677);//設置圖片的高度
layoutParams.width = width; //設置圖片的寬度
layoutParams.setMargins(15, 0, 15, 0);//左右邊距15.0px,與主框架一致
holder.piclist_item.setLayoutParams(layoutParams);
holder.piclist_item.setScaleType(ImageView.ScaleType.FIT_START); //按比例擴大或縮小到View的寬度,然後置頂顯示
view.setTag(holder);


由於已知圖片寬高比例,在將寬度按屏幕寬度縮放時,只需將高度乘以對應比例即可。或者通過ScaleType縮放。

附:ScaleType屬性

1)CENTER

   按圖片的原來size 居中顯示,當圖片長寬超過View的上寬時,則截取圖片的居中部分顯示

2)CENTER_CROP

   按比例擴大圖片的size 居中顯示,使得圖片的長寬的等於或大於View的長寬

3)CENTER_INSIDE

   將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長寬等於或小於view的長寬

4)FIT_CENTER

   把圖片按比例擴大或縮小到View的寬度,然後居中顯示

5)FIT_STAR

   把圖片按比例擴大或縮小到View的寬度,然後置頂顯示

6)FIT_END

   把圖片按比例擴大或縮小到View的寬度,然後置於底部顯示

7)FIT_XY

   不按比例縮放圖片,目標是把整個圖片塞滿整個View

如果



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