最近做了个android定时器来实现每隔一段时间来显示下一张图片
在代码中设置定时器时间是没问题的
我加了个EditText,Button
在文本中输入数字,点击按钮
得到这个数字,再设置为定时的时间
第一次假设设为5秒没有问题,是每5秒显示下一张
然后再改成1秒也没问题,是每一秒显示下一张
但是再想改成其他数字还是每一秒显示下一张
做了下测试,就是下一次设置的数字不能比上一次大
否则,依然是上一次的定时时间
在代码中设置定时器时间是没问题的
我加了个EditText,Button
在文本中输入数字,点击按钮
得到这个数字,再设置为定时的时间
第一次假设设为5秒没有问题,是每5秒显示下一张
然后再改成1秒也没问题,是每一秒显示下一张
但是再想改成其他数字还是每一秒显示下一张
做了下测试,就是下一次设置的数字不能比上一次大
否则,依然是上一次的定时时间
解决方案 »
- Win7下NDKR7b&&Cygwin,编译libiconv-1.14
- fedora15 上android运行不了???
- 如何更改虚拟版本?
- android怎么在代码里获得系统文件的读写权限?已经获得root权限
- android QuickContactBadge里面函数的作用
- 求android开发记事本源码
- 通知栏点击事件
- 大家讲讲app的技术架构
- 新手求交APK生成问题,已知安卓程序代码,那个Eclipse什么的设置老有问题,请问用Dreamweaver怎么生成APK软件安装到手机上啊?!?!
- 关于Android手机不插卡打开热点,iPhone无法上网的问题
- android游戏开发 关于图片路线碰撞检测问题
- listview焦点的光标问题
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;
import android.widget.Gallery.LayoutParams;
import android.view.View.OnClickListener;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Handler;
import android.os.Message;
import android.widget.EditText;
import java.lang.Integer;
//import android.util.Log;public class Image extends Activity implements
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory{
private ImageSwitcher mSwitcher;
private EditText m_Text;
private static int m_nIndex = 0;
private static int m_nTime = 1;
private Integer[] mThumbIds = {
R.drawable.ic_launcher,R.drawable.j,R.drawable.k,R.drawable.l,
R.drawable.m,R.drawable.n}; private Integer[] mImageIds = {
R.drawable.ic_launcher,R.drawable.j,R.drawable.k,R.drawable.l,
R.drawable.m,R.drawable.n};
/** Called when the activity is first created. */
private Timer m_Timer = new Timer();
private Handler m_Handler = new Handler()
{
public void handleMessage(Message msg)
{
//Log.e("@@@",m_nIndex+"");
if(mImageIds.length <= m_nIndex)
{
m_nIndex = 0;
}
mSwitcher.setImageResource(mImageIds[m_nIndex]);
mSwitcher.invalidate();
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out)); Gallery g = (Gallery) findViewById(R.id.gallery);
ImageAdapter mAdapter = new ImageAdapter(this);
g.setAdapter(mAdapter);
g.setOnItemSelectedListener(this);
Button BtnNext = (Button)findViewById(R.id.next);
BtnNext.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
m_nIndex++;
if(mThumbIds.length <= m_nIndex)
{
m_nIndex = 0;
}
mSwitcher.setImageResource(mImageIds[m_nIndex]);
}
});
Button BtnForward = (Button)findViewById(R.id.forward);
BtnForward.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
m_nIndex--;
if(0 > m_nIndex)
{
m_nIndex = mThumbIds.length -1;
}
mSwitcher.setImageResource(mImageIds[m_nIndex]);
}
});
m_Text = (EditText)findViewById(R.id.text);
Button BtnSure = (Button)findViewById(R.id.sure);
BtnSure.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
String sText = m_Text.getText().toString();
m_nTime = Integer.parseInt(sText);
m_Timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
m_nIndex++;
Message msg = new Message();
msg.what = m_nIndex;
m_Handler.sendMessage(msg);
}
},0,m_nTime*1000);
}
});
}
protected void OnDestory()
{
m_Timer.cancel();
m_nTime = 0;
super.onDestroy();
}
/*
*
* override for ViewSwitcher.ViewFactory#makeView()
*/
public View makeView() {
ImageView i = new ImageView(this);
i.setBackgroundColor(0xFF000000);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
return i;
} /*
* override for
* AdapterView.OnItemSelectedListener#onItemSelected()
*/
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
mSwitcher.setImageResource(mImageIds[position]);
m_nIndex = position;
} /*
* override for AdapterView.OnItemSelectedListener#onNothingSelected()
*/
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
public class ImageAdapter extends BaseAdapter {
//add by yzg
private ImageView mImageView;
public void SetImageView(ImageView i)
{
mImageView = i;
}
public ImageView GetImageView()
{
return mImageView;
}
public ImageAdapter(Context c) {
mContext = c;
} public int getCount() {
return mThumbIds.length;
} public Object getItem(int position) {
return position;
} public long getItemId(int position) {
return position;
} public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
SetImageView(i);//add by yzg
i.setImageResource(mThumbIds[position]);
i.setAdjustViewBounds(true);
i.setLayoutParams(new Gallery.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
i.setBackgroundResource(android.R.drawable.picture_frame);
return i;
} private Context mContext; }
}
private Timer m_Timer = new Timer();
private Handler m_Handler = new Handler()
{
public void handleMessage(Message msg)
{
//Log.e("@@@",m_nIndex+"");
if(mImageIds.length <= m_nIndex)
{
m_nIndex = 0;
}
mSwitcher.setImageResource(mImageIds[m_nIndex]);
mSwitcher.invalidate();
super.handleMessage(msg);
}
};
m_Text = (EditText)findViewById(R.id.text);
Button BtnSure = (Button)findViewById(R.id.sure);
BtnSure.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
String sText = m_Text.getText().toString();
m_nTime = Integer.parseInt(sText);
m_Timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
m_nIndex++;
Message msg = new Message();
msg.what = m_nIndex;
m_Handler.sendMessage(msg);
}
},0,m_nTime*1000);
}
});
短时间的可以,是一种假像,因为执行时间很快就到达,还有执行周期短,都会以为是可控的,但实际上如果是网络读取的操作,5分钟超时等待,而短时间的队列触发更频繁,在我的项目开发中,app退出后,依然会触发后台service数据读取。
问题已解决
已结贴
求关注我的android 网络贴