仿照现在各大新闻网站图片新闻的浏览模式,上面展示具体图片(ImageSwitch),下面是可以滑动的小图片(Gallery)。
其中需要注意的是ImageSwitch需要定义一个工厂返回的组件,并且可以设置动画效果。
Gallery用适配器加载布局,其Gallery可设置,两个图片的间隔距离。
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageSwitcher android:id="@+id/switcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_weight="1" > </ImageSwitcher> <Gallery android:id="@+id/gallary" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:layout_weight="3" android:spacing="20dp" /> </LinearLayout>
package com.gallaryandswitch; import android.app.Activity; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.FrameLayout; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.ViewSwitcher.ViewFactory; import com.example.wangyitest.R; public class MainAct extends Activity { ImageSwitcher imageSwitcher; Gallery gallery; int[] pics = { R.drawable.f1, R.drawable.f2, R.drawable.f3, R.drawable.f4, R.drawable.f5, R.drawable.f6, R.drawable.f7, R.drawable.flower }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.galleryswitch); imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher); gallery = (Gallery) findViewById(R.id.gallary); imageSwitcher.setFactory(new ViewFactory() { @Override public View makeView() { // TODO Auto-generated method stub ImageView imageView = new ImageView(getApplicationContext()); imageView.setScaleType(ScaleType.FIT_CENTER); imageView.setLayoutParams(new FrameLayout.LayoutParams( FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT)); imageView.setBackgroundColor(getResources().getColor( R.color.bg3)); return imageView; } }); imageSwitcher.setInAnimation(AnimationUtils.loadAnimation( getApplicationContext(), android.R.anim.fade_in)); imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation( getApplicationContext(), android.R.anim.fade_out)); gallery.setAdapter(new MyAdapter()); // gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() // { // // @Override // public void onItemClick(AdapterView<?> parent, View view, // int position, long id) { // // TODO Auto-generated method stub // imageSwitcher.setImageResource(pics[position]); // } // }); gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub imageSwitcher.setImageResource(pics[position]); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }); } class MyAdapter extends BaseAdapter { @Override public int getCount() { // TODO Auto-generated method stub return pics.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView imageView = new ImageView(getApplicationContext()); imageView.setScaleType(ScaleType.FIT_CENTER); imageView.setLayoutParams(new Gallery.LayoutParams(400, Gallery.LayoutParams.WRAP_CONTENT)); imageView.setImageBitmap(BitmapFactory.decodeResource( getResources(), pics[position])); imageView.setBackgroundColor(getResources().getColor(R.color.bg2)); return imageView; } } }