学了这么多,应该可以写出简单的软件了,好了,现在就来学点小操作吧。
1.公告 是不是看到很多的软件正上方经常会显示一些公告呀,提示什么什么活动,其实android实现这个不难,
<TextView
android:id="@+id/txt"
android:layout_width="400dp"
android:layout_height="30dp"
android:textSize="20sp"
android:paddingLeft="35dp"
android:paddingRight="15dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever" //一直浮动
android:singleLine="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:textColor="#FF0000"
android:text="公告:版本有了更新"/>
效果如图:
是不是so easy?
2.延时操作:
延时操作可以用timer,handler,thread等实现,我在这里用的是handler:
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:btn.setEnabled(true);break;
}
}
};
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { //延时操作
btn.setEnabled(false);
handler.sendEmptyMessageDelayed(1,1000); //延时1s后btn按钮变回可点击状态
Intent intent=new Intent(FunctionActivity.this,good_luckActivity.class);
startActivity(intent);
}
});
3.定时器
定时器我们一般用到AlarmManager。这里就要介绍几个工作类:
ELAPSED_REALTIME:从开机开始计时,但不会唤醒系统
ELAPSED_REALTIME_WAKEUP:从开机开始计时,会唤醒系统
SystemClock.elapsedRealtime():从开机到现在经历时间毫秒数
RTC:从1970.1.1.00开始计时,不会唤醒系统
RTC_WAKEUP:从1970.1.1.00开始计时,会唤醒系统
System.currentTimeMillis():从1970.1.1.00到现在经历毫秒数
好了有了这个的知识基础,理解下面的代码就不难了:
public class LongRunningService1 extends Service { //这是一个service类
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
//处理事件
}).start();
AlarmManager manager=(AlarmManager) getSystemService(ALARM_SERVICE);
int anHour=60*1000;//每隔60s运行一次
long triggerAtTime= SystemClock.elapsedRealtime()+anHour; //最开始运行时间为60s后
Intent i=new Intent(this,LongRunningService1.class);
PendingIntent pi=PendingIntent.getService(this,0,i,0);
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pi);
return super.onStartCommand(intent,flags,startId);
}
}
它的调用如下:
Intent i = new Intent(TodayActivity.this, LongRunningService1.class);//调度延时操作
TodayActivity.this.startService(i);
4.定时
上面讲到了定时器,可以实现重复执行,但是一旦需求是退出软件后依然需要执行的话,定时器就难以满足我们的需求,所以,这里我们用一种新的方法来实现,那就是Calendar
Calendar用来获取系统时间,可以获取年月日小时分钟秒,周几每月第几周第几天等等。
Calendar calendar=Calendar.getInstance(); //获取系统时间
int hour=calendar.get(Calendar.HOUR_OF_DAY); //获取当前时间的小时
int min=calendar.get(Calendar.MINUTE); //获取当前时间的分钟
有了Calendar就可以实现定时更新操作,比如你想要每周1的上午9:30执行什么。
就可以:
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY&&hour==9&&min==30) //执行命令
好了,今天要介绍的就是这些了。整个第一个项目要说的差不多说完了,一个月以后会开始第二个项目,到时候一定会有更多想要分享的干货。再会