Android开发:ImageSwitcher常用技巧(二)

2014-11-24 11:36:39 ? 作者: ? 浏览: 4
ort android.os.Bundle;


import android.util.DisplayMetrics;


import android.view.View;


import android.view.Window;


import android.view.WindowManager;


import android.widget.AdapterView;


import android.widget.Gallery;


import android.widget.ImageSwitcher;


import android.widget.ImageView;


import android.widget.AdapterView.OnItemSelectedListener;


import android.widget.FrameLayout.LayoutParams;


import android.widget.ViewSwitcher.ViewFactory;



public class ControlImageSwitcher extends Activity


implements


OnItemSelectedListener, ViewFactory


{


private Gallery gallery;


private ImageSwitcher imageswitcher;


private ImageAdapter adapter;


private DisplayMetrics dm;



//@Override


public void onCreate(Bundle savedInstanceState)


{


super.onCreate(savedInstanceState);


requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题


int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN; // 全屏


this.getWindow().setFlags(flag, flag);



setContentView(R.layout.main);



// 得到屏幕尺寸


dm = new DisplayMetrics();


getWindowManager().getDefaultDisplay().getMetrics(dm);



gallery = (Gallery)this.findViewById(R.id.gallery);


imageswitcher = (ImageSwitcher)this.findViewById(R.id.imageswitcher);



// 下面这句必须要,不然会使 setImageSource 这个方法指向空指针


imageswitcher.setFactory(this);



adapter = new ImageAdapter(this);



gallery.setAdapter(adapter);



gallery.setOnItemSelectedListener(this);


}



//@Override


public void onItemSelected(AdapterView< > parent, View view, int position, long id)


{


int imageID = (int) adapter.getItemId(position);


imageswitcher.setImageResource(imageID);


}



//@Override


public void onNothingSelected(AdapterView< > parent)


{


imageswitcher.setImageResource((int) adapter.getItemId(0));


}



//@Override


// 接口 ViewFactory 中规定必须实现的方法,返回的 View 就是 ImageSwitcher 用于显示图片的 vie w


public View makeView()


{


ImageView iv = new ImageView(this);


// 设置背景颜色


iv.setBackgroundColor(0xFF646464);


iv.setScaleType(ImageView.ScaleType.FIT_CENTER);


iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, dm.heightPixels - 70));


// 上面语句中 -70 的目的是应为, ImageSwitcher 下面要显示 Gallery ,我们在 ImageAdapter 中设定了


// view.setLayoutParams(new Gallery.LayoutParams(60, 60));


// 即高度是 60pixels ,在加在 main.xml Gallery 有下面这样的属性:


// android:layout_marginTop="10px"


// 因此加起来一共刚好是 70px



return iv;


}


}



运行结果:





让下面的 Gallery 中的图片滚动,上面的 ImageSwitcher 会显示 Gallery 在屏幕上处于中间 ( 水平方向 ) 位置的那副图片:



-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: