zoukankan      html  css  js  c++  java
  • Android开发笔记 二

    Activity切换动画的实现

    在这里因为项目的需要实现了Activity的淡入淡出动画,具体实现的步骤如下:

    首先在anim目录下写好自己的动画xml文件

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <set xmlns:android="http://schemas.android.com/apk/res/android"
    3      android:shareInterpolator="false">
    4     <alpha 
    5         android:fromAlpha="0"
    6         android:toAlpha="1"
    7         android:duration="1500"
    8     />
    9 </set>

    这个是新的Activity进入的动画,它的透明度从0变化到1,执行时间为1.5秒,接下里看看退出动画

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <set xmlns:android="http://schemas.android.com/apk/res/android"
    3      android:shareInterpolator="false">
    4     <alpha 
    5         android:fromAlpha="1.0"
    6         android:toAlpha="0"
    7         android:duration="1500"
    8     />
    9 </set>

    这个是Activity退出的动画,它的透明度从1变化到0,执行时间为1.5s。

    上面的set中有个shareInterpolator的字段,这个主要是用来定义动画变化速率的。

    写完了这两个文件,那我们看看如何使用这两个文件:

    1 startActivity(intent);
    2 overridePendingTransition(R.anim.enter_alpha, R.anim.exit_alpha);

    在这里我们需要调用它的overridePendingTransition方法来加载我们自己的动画,需要注意的是这个方法要在调用startActivity之后在调用。

    android中接收Receiver

    在android中,我主要使用了两种Receiver,一种是接受系统广播,如系统开机广播,插入新的输入设备等,还有一种就是在程序内部使用Receiver

    我们先看看怎么接受系统的开机广播:

    首先我们需要继承BroadcastReceiver实现我们自己的接收器,我的简单代码如下:

     1     class TestBroadcast extends BroadcastReceiver
     2     {
     3 
     4         @Override
     5         public void onReceive(Context context, Intent intent) {
     6             // TODO Auto-generated method stub
     7             if(intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
     8             {
     9                 //系统开机
    10             }else if(USB_ACTION.equals(intent.getAction()))
    11             {
    12                 //插入新的USB输入设备
    13             }
    14 
    15         }
    16         
    17     }
    18     

    写完我们自己的Receiver之后,我们需要在AndroidManifest.xml中注册我们自己的Receiver,否则是没有办法是用的

    1         <receiver 
    2             android:name="com.example.test.TestBroadcast"
    3             >
    4             <intent-filter>
    5                  <action android:name="android.intent.action.BOOT_COMPLETED" ></action>
    6                  <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
    7             </intent-filter> 
    8         </receiver>

    在这里就把我们的Receiver注册到了系统,intent-filter字段是注册了我们感兴趣的事件,在这里是系统开机和USB输入设备的插入,在这里加上之后我们还需要声明一下我们所需要的权限,在application字段之前声明我们的权限:

    1     <uses-feature android:name="android.hardware.usb.host"/>
    2     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>"

    这个时候我们就把Receiver注册到系统里了,系统开机就会调用我们自己的Receiver了。在这里我们看一下怎么取出系统Receiver中所附带的数据,以USB输入设备为例:

    1     UsbDevice device  = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

    系统在发出广播的时候会附带一个intent,我们可以从intent取出其附带的数据

    系统内部Receiver的使用

    在内部程序单独使用的Receiver就不用到AndroidManifest.xm中注册了,我们可以直接在程序内部继承BroadcastReceiver来实现消息的传递,以为为简单的示例:

    1 class MyReceiver  extends BroadcastReceiver
    2     {
    3 
    4         @Override
    5         public void onReceive(Context context, Intent intent) {
    6     }
    7   }

     我们只要在代码的把它注册上去就可以了,

    1 MyReceiver myReceiver = new MyReceiver(); 
    2 IntentFilter filter = new IntentFilter();
    3 filter.addAction("test");
    4 registerReceiver(myReceiver, filter);

    如果我们在程序内部的其他地方发送消息就可以调用这个Receiver了

    1 Intent receiverIntent = new Intent();
    2 receiverIntent.setAction(NEW_DEVICE);
    3 context.sendBroadcast(receiverIntent);
  • 相关阅读:
    大学的最后时光---我的毕设日记(二)
    大学的最后时光---我的毕设日记(一)
    记公司同事的一次集体活动
    ssh框架基本原理
    plsql基本操作记录
    eclipse快捷键。
    面向对象的特性:封装继承多态
    设置label中的对齐方式
    pixmap和label设置图片自适应大小
    类的继承
  • 原文地址:https://www.cnblogs.com/jjxxjnzy/p/3665669.html
Copyright © 2011-2022 走看看