手把手教你写软件7.几个常用的操作

学了这么多,应该可以写出简单的软件了,好了,现在就来学点小操作吧。
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) //执行命令
好了,今天要介绍的就是这些了。整个第一个项目要说的差不多说完了,一个月以后会开始第二个项目,到时候一定会有更多想要分享的干货。再会

猜你喜欢

转载自blog.csdn.net/qq_37820491/article/details/80160535