갤러리

4366 단어
Gallery를 정의하려면 먼저 main.xml에서 설명하기:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:background="@drawable/white"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView
  android:id="@+id/myTextView01"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:text="@string/hello"
  android:gravity="center_vertical|center_horizontal"
  />
  <Gallery
  android:id="@+id/myGallery1" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:gravity="bottom" 
  /> 
</LinearLayout>

기본 프로그램 코드는 다음과 같습니다. 기본 어댑터 컨테이너를 정의합니다.
package apple.com;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;

public class GalleryActivity extends Activity {
	private TextView mTextView;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mTextView = (TextView) findViewById(R.id.myTextView01);
        mTextView.setTextColor(Color.BLUE);
        ((Gallery)findViewById(R.id.myGallery1)).setAdapter(new ImageAdapter(this));
        
    }
    
    class ImageAdapter extends BaseAdapter {
    	private Context myContext;
    	/*
    	 *      
    	 */
    	private int[] myImageIds = {
    			android.R.drawable.btn_minus,
    			android.R.drawable.btn_radio,
    			android.R.drawable.ic_lock_idle_low_battery,
    			android.R.drawable.ic_menu_camera
    	};
    	//    
    	public ImageAdapter(Context c) {this.myContext = c; }
    	
    	//             
		@Override
		public int getCount() {
    		return this.myImageIds.length;
		}
		//          ID
		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}
		//          View,    ID ,       
		public View getView(int position, View convertView, ViewGroup parent) {
			//    ImageView  
			ImageView i = new ImageView(this.myContext);
			
			i.setImageResource(this.myImageIds[position]);
			i.setScaleType(ImageView.ScaleType.FIT_XY);
			//  ImageView      
			i.setLayoutParams(new Gallery.LayoutParams(120,120));
			return i;
		}
		
		//          ,  getScale  views   (0.0f to 1.0f)      
		public float getScale(boolean focused,int offset) {
			return Math.max(0, 1.0f/(float)Math.pow(2,Math.abs(offset)));
		}
		
    	
    }
}

i.setScaleType(ImageView.ScaleType.FIT_XY);
setScaleType의 의미는 다음과 같습니다.
ImageView의 속성 android:scaleType, 즉 ImageView.setScaleType(ImageView.ScaleType).android: scaleType은 이미지가 ImageView에 대한 크기와 어떻게 일치하는지 제어합니다.ImageView.ScaleType/android:scaleType 값의 의미 차이점:
CENTER/center는 그림의 원래 크기에 따라 가운데로 표시합니다. 그림의 길이/너비가 View의 길이/너비를 초과하면 그림의 가운데 부분을 캡처해서 표시합니다
CENTER_CROP/centerCrop은 그림의 크기 가운데 표시를 비례적으로 확대하여 그림의 길이 (너비) 를 View의 길이 (너비) 보다 크거나 같게 합니다.
CENTER_INSIDE/center Inside는 그림의 내용을 전체적으로 가운데로 표시합니다. 비례에 따라 축소하거나 원래의size를 통해 그림의 길이/너비는 View의 길이/너비보다 작거나 같게 합니다.
FIT_CENTER/fitCenter에서 뷰의 폭을 비례적으로 확대/축소하여 중앙에 표시
FIT_END/fitEnd 그림을 뷰 너비에 비례하여 확대/축소하여 View 아래 부분에 표시
FIT_START/fitStart 그림을 비례에 따라 확대/축소하여 View의 상단에 표시
FIT_XY/fitXY 그림을 비례에 따라 확대하지 않고 View 크기로 축소합니다. MATRIX/matrix를 행렬로 그립니다.
 

좋은 웹페이지 즐겨찾기