Android开发笔记

1.当我们直接使用一个ImageButton的时候,直接给它设置图片的时候,它出来是这个样子的:

可以看到有一个灰色的边框,这个太难看了,如何去掉这个边框呢,加入下面的这一行代码就可以了:

android:background="#00000000"

在运行看看效果,贴图如下:

那我们如何来设置一个ImageButoon的按下和抬起的效果呢,在这里我们需要定制一下它的主题文件,主题文件的模板如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_clear_focus" android:state_pressed="true"></item>
    <item android:drawable="@drawable/button_clear_focus" android:state_focused="true"/>
    <item android:drawable="@drawable/button_clear"></item>

</selector>

这个文件一般放在drawable目录下

2.Activity的透明

在开发的时候需要有一个Activity透明,在网上找了,把设置的方式在这里记一下:

首先需要在values的目录下新建一个xml文件,用来描述Activity的主题,模板如下:

<resources>
<style name="Transparent">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
</style>
</resources> 

在这里引用到了一个颜色值,这个颜色值也是定义在一个xml文件里,xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent_background">#80000000</color>
</resources>

在这里说一下这个颜色值的构成,这个颜色一共有8位组成,其中前两位比较重要这个是用来描述透明度的,后面的6位就是大家熟悉的RGB方式了,在这里就不说了。

定义了以上的内容,那我们该如何使用呢,我们以ExampleActivity.java这个文件为例:

第一步需要在AndroidMainifest.xml里注册一下吧,内容如下:

 <activity 
            android:name="com.example.test.ExampleActivity"
            android:theme="@android:style/Theme.Translucent" 
 ></activity>

在这里定了之后,activity就知道引用这个主题了,在这里设置了以后,我们还需要在ExampleActivity的onCreate方法中加入一下的代码:

setTheme(R.style.Transparent);	

需要注意的是这一段代码一定要在setContentView方法之前调用,经过以上的步骤我们就可以使用一个透明的Activity了

3.android中定时器的使用。

 1 timer = new Timer();
 2             timer.schedule(new TimerTask() {
 3 
 4                 @Override
 5                 public void run() {
 6                     // TODO Auto-generated method stub
 7                     Message msg = new Message();
 8                     handler.sendMessage(msg);
 9                 }
10             }, 3000);
11 
12             handler = new Handler() {
13                 @Override
14                 public void handleMessage(Message msg) {
15                     // TODO Auto-generated method stub
16                     super.handleMessage(msg);
17 
18                     Log.d(TAG, "cancel");
19 
20                     SettingWelcome.this.finish();
21                     timer.cancel();
22                 }
23             };

4.接受Android的系统广播

在新的组件中需要监听Android一个广播,主要的步骤如下:

在AndroidMainifest中注册一个receiver

继承BroadcastReceiver实现自己的广播接收器

下面贴代码:

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

在这里我们需要接收的广播为:系统开机广播,插入输入设备广播

接着我们看下我们实现的receiver代码:

public class BootBroadcast extends BroadcastReceiver{

    public void onReceive(Context context, Intent intent) {

   if(USB_ACTION.equals(intent.getAction()))
        {  
            UsbDevice device  = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
     }

  }
}

当系统发出我们需要的广播是就会调用我们的这一段代码。那我们如何在这一段代码里启动一个Activity呢,在这里需要注意一下,我先贴一下代码:

1 Intent startIntent = new Intent(context,SettingWelcome.class);
2 startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3 context.startActivity(startIntent);

如果我们要在一个receiver里启动一个Activity,我们一定要调用这个段代码,否则会报错:

1 startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

至于为什么大家去看文档吧

原文地址:https://www.cnblogs.com/jjxxjnzy/p/3640970.html