手把手教你写软件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) //执行命令

好了,今天要介绍的就是这些了。整个第一个项目要说的差不多说完了,一个月以后会开始第二个项目,到时候一定会有更多想要分享的干货。再会

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值