android gallery自动播放,android 模仿iphone Gallery 效果, 增自动播放功能

该博客展示了如何在Android中使用Gallery组件创建一个图片轮播功能,并结合LinearLayout实现当前选中项的指示器效果。博主详细解释了代码逻辑,包括设置适配器、监听器以及定时器来实现自动滚动和选中状态的更新。
摘要由CSDN通过智能技术生成

packagecom.asfman;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.AdapterView.OnItemSelectedListener;importandroid.widget.BaseAdapter;importandroid.widget.Gallery;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.Toast;publicclassGalleryTestextendsActivity {privateGallery gallery;privateintcurPos=0;privateRunnable runnable;privateintdelayTime=5000;privateHandler uiHandler=newHandler() {

@OverridepublicvoidhandleMessage(Message msg) {if(curPos>=gallery.getCount()) curPos=0;

gallery.setSelection(curPos);

}

};

@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);

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

ImageAdapter imageAdapter=newImageAdapter(this);

gallery.setAdapter(imageAdapter);

gallery.setOnItemSelectedListener(newOnItemSelectedListener() {

@OverridepublicvoidonItemSelected(AdapterView>arg0, View view,intposition,longid) {

Log.i("info","selected:"+position);

LinearLayout oLayout=(LinearLayout) findViewById(R.id.indicator);for(inti=0; i

ImageView oView=((ImageView)oLayout.getChildAt(i));

oView.setImageResource(position==i?R.drawable.home_light_frame : R.drawable.home_dark_frame);

}

uiHandler.removeCallbacks(runnable);

uiHandler.postDelayed(runnable, delayTime);

curPos=position;

}

@OverridepublicvoidonNothingSelected(AdapterView>arg0) {

}

});

gallery.setOnItemClickListener(newOnItemClickListener(){

@OverridepublicvoidonItemClick(AdapterView>parent, View view,intposition,longid) {

Toast.makeText(GalleryTest.this,"positon:"+position, Toast.LENGTH_LONG).show();

}

});//gallery.setSelection(1);LinearLayout oLayout=(LinearLayout) findViewById(R.id.indicator);for(inti=0; i

ImageView oView=newImageView(this);

oView.setImageResource(R.drawable.home_dark_frame);

oLayout.addView(oView);

}

runnable=run();

uiHandler.postDelayed(runnable, delayTime);

}privateRunnable run() {returnnewRunnable() {

@Overridepublicvoidrun() {

uiHandler.sendEmptyMessage(1);

curPos++;

}

};

}

}classImageAdapterextendsBaseAdapter

{privateContext mContext;privateint[] resIds=newint[]{ R.drawable.azk, R.drawable.jp, R.drawable.azk, R.drawable.jp, R.drawable.azk, R.drawable.jp};publicImageAdapter(Context context)

{

mContext=context;

}//返回图像总数publicintgetCount()

{returnresIds.length;

}publicObject getItem(intposition)

{returnposition;

}publiclonggetItemId(intposition)

{returnposition;

}//返回具体位置的ImageView对象publicView getView(intposition, View convertView, ViewGroup parent)

{

Log.i("info","------------------getView:"+position);if(convertView==null) {

LayoutInflater layoutInflater=LayoutInflater.from(mContext);

convertView=layoutInflater.inflate(R.layout.item,null);

}//设置当前图像的图像(position为当前图像列表的位置)ImageView oImageView=(ImageView) convertView.findViewById(R.id.img);

oImageView.setImageResource(resIds[position]);returnconvertView;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值