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);
至于为什么大家去看文档吧