1,android 关闭进程

若是只有一个单独的Activity的工程,例如Activity A,调用android.app.Activity.finish()的话,并不会关闭该工程,只是使之不处于前台,而被置于后台。参考网上的方法,可以调用   android.os.Process.killProcess(android.os.Process.myPid());这种方法确实的是可以关闭该工程进程的,您可以到应用程序管理里头看看,该工程已不存在于Running中。

但是若是多个的Activity的工程,例如Activity A---》Activity B,而在Activity B中调用android.os.Process.killProcess(android.os.Process.myPid());这种方法应该只是关闭当前的Activity,接着系统会重构之前的Activity A(记住,这里说的是重构,意思是,并不会调用Activity A 的onRestart(),而是调用OnCreate())


2, Android开发问题整理

1、The constructor Intent(new View.OnClickListener(){}, Class) is undefined

点击按钮,进入另一个activity,问题代码如下

[java] view plain copy
  1. "white-space:pre">      Button btn = (Button)findViewById(R.id.btnMe);  
  2.         btn.setOnClickListener(new OnClickListener(){  
  3.   
  4.             @Override  
  5.             public void onClick(View arg0) {  
  6.                 // TODO Auto-generated method stub  
  7.                 Intent intent = new Intent(this, ButtonStudyActivity.class);  
  8.                 startActivity(intent);  
  9.             }});  

Intent myIntent = new Intent(this, AuswahlActivity.class);    this.startActivity(myIntent); 

这部分代码可能在 OnClickListener 中,所以使用:

Intent myIntent = new Intent(YouCurrentActivity.this, AuswahlActivity.class);YouCurrentActivity.this.startActivity(myIntent); 

原因是,在一个匿名类(你的类是OnClickListener),this通常是指OnClickListener而不是activity。intent的第一个参数是Context(应该是activity),因此导致了出现的错误。


解决方案一: [java] view plain copy
  1. Intent intent = new Intent(Activityheihei.this, ButtonStudyActivity.class);  
解决方案二: [java] view plain copy
  1. "white-space:pre">      final Intent intent = new Intent(Activityheihei.this, ButtonStudyActivity.class);  
  2.         Button btn = (Button)findViewById(R.id.btnMe);  
  3.         btn.setOnClickListener(new OnClickListener(){  
  4.   
  5.             @Override  
  6.             public void onClick(View arg0) {  
  7.                 // TODO Auto-generated method stub  
  8.                 startActivity(intent);  
  9.             }});  
解决方案三: [java] view plain copy
  1. "white-space:pre">      final Intent intent = new Intent(this, ButtonStudyActivity.class);  
  2.         Button btn = (Button)findViewById(R.id.btnMe);  
  3.         btn.setOnClickListener(new OnClickListener(){  
  4.   
  5.             @Override  
  6.             public void onClick(View arg0) {  
  7.                 // TODO Auto-generated method stub  
  8.                 startActivity(intent);  
  9.             }});  

2、ActivityManager: Warning: Activity not started, its current task has been brought to the front

Eclipse中,Project->Clean...,然后选中项目,clean一下即可。

3、E/AndroidRuntime(338): java.lang.IllegalStateException: Could not find a methodonClickBtnManifest(View) in the activity class cn.edu.pku.Activityheihei for onClick handler on view class android.widget.Button with id 'btnmanifest'

想给Button中加入点击事件

[html] view plain copy
  1. <Button  
  2.     android:id="@+id/btnmanifest"  
  3.     ... ...  
  4.     android:onClick="onClickBtnManifest" />  

Activity中实现如下

[java] view plain copy
  1. private void onClickBtnManifest() {  
  2.   
  3.     Toast.makeText(Activityheihei.this"button manifest", Toast.LENGTH_SHORT).show();  
  4. }  
该函数需要加入参数View v,之后还是这个错误。private改为public即可。 [java] view plain copy
  1. "white-space:pre">  public void onClickBtnManifest(View v) {  
  2.   
  3.         Toast.makeText(Activityheihei.this"button manifest", Toast.LENGTH_SHORT).show();  
  4.     }  

4、Unable to resolve target 'android-5'

使用高版本的SDK后再导入以前用低版本的project时,会遇到一些兼容性的问题。

需要将project.properties中的target=android-5改为target=android-7就好了。
但要注意,也要同步将AndroidManifest.xml中的改为,否则编译中会警告提示使用的版本过低。

参考 http://blog.sina.com.cn/s/blog_64edd5040100nu0d.html


android通过USB使用真机调试程序

我的机子很老,开启个android模拟器都要好几分钟,但幸亏有个android的真机,这样直接在andriod手机上调试也是一个不错的选择。下面我就介绍 一下使用android手机来调试android应用程序所需要的步骤:(典型的Hello World程序)

1、手机通过数据线连接在电脑上

2、设置android手机为USB调试模式。步骤: menu—> 设置 —> 应用程序 —> 开发 , 选择【USB调试】

3、如果是window系统,系统会提示安装驱动:

选择正确的android sdk安装目录,然后点击下一步,系统就开始安装驱动了

4、驱动安装完成之后,重启电脑(通常系统会有“安装新驱动,重启才能生效”的提示),这但应该明白吧

5、重复第1步和第2步,打开命令窗口,检测手机设备是否已经被识别,如下所示:

“HT99YLG11834 device”就是检测到得手机设备

6、接下来就开始在eclipse上调试android程序了,右击android工程->Run as->Android Application,弹出如下窗口:(重新启动系统之后才有这样的效果)

7、选中手机设备,点击OK之后,程序就开始在真机上安装了,控制台输出如下信息:

[2011-04-07 22:24:49 - HelloWorld] Uploading HelloWorld.apk onto device ‘HT99YLG11834′
[2011-04-07 22:24:49 - HelloWorld] Installing HelloWorld.apk…
[2011-04-07 22:24:53 - HelloWorld] Success!
[2011-04-07 22:24:53 - HelloWorld] Starting activity com.eightqiu.activity.StatsResultActivity on device
[2011-04-07 22:24:57 - HelloWorld] ActivityManager: Starting: Intent {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]cmp=com.eightqiu.activity/.StatsResultActivity } 8、运行这个应用程序,这样就可以使用手机来测试了


3, Android开发真机测试方法

方法如下:

(1)开机一部Android手机(当让Pad也行)

(2)在手机中:设置-->应用程序-->开发-->USB调试

(3)插上USB

(4)在CMD中测试一下,连接是否正常,CMD中命令如下:

           adb devices   回车

          若显示你的设备名,则证明连接正常。

(4)改写AndroidManifest.xml

             
                  android:icon="@drawable/ic_launcher"
                  android:label="@string/app_name" 
                  android:debuggable="true">

         注意:加的是绿的这句。

(5)执行真机调试操作:

          在Eclipse中右键项目-->Debug As-->Debug Configurations-->Target选项卡-->选择Manual

                                              -->点击下面Debug-->选择你的设备-->OK

           这时你的设备就会开始执行你的Android程序啦!很流畅。

           下次再想调试时,可以点击Run然后选择你的设备,然后OK,就可以啦。

(6)注意:无论是否用Eclipse

                     任何Android软件只要在真机上运行发生异常,都可以在命令行窗口下查看具体的异常

                     在CMD中输入:adb logc at    回车

                     注意查看以Causeby开头的行,这些行指明了在哪行代码出错了.........................


4、Android Activity去除标题栏和状态栏

一、在代码中设置 

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
//去除title  
requestWindowFeature(Window.FEATURE_NO_TITLE);  
//去掉Activity上面的状态栏 
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN); 
   setContentView(R.layout.main); 


或者 

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1); 

R.layout.custom_title_1  这个就是你的标题文件布局 

二、在配置文件里修改 

(关键代码:android:theme="@android:style/Theme.NoTitleBar.Fullscreen",如果想只是去除标题栏就后面不用加Fullscreen了,另外,如果想要整个应用都去除标题栏和状态栏,就把这句代码加到
隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 

隐藏状态栏:android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”. 
在这里我还想说明一下,用前者在我们应用运行后,会看到短暂的状态栏,然后才全屏,而第二种方法是不会有这种情况的,所以我建议大家使用后者!

Android Activity去除标题栏和状态栏

最简单的方法是在配置文件(AndroidManifest.xml)里修改

Xml代码  
  1. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"   

注意:

  1. 如果想只是去除标题栏就后面不用加Fullscreen了。
  2. 如果想要整个应用都去除标题栏和状态栏,就把这句代码加到标签里面。
  3. 如果只是想某个activity起作用,这句代码就加到相应的标签上。

Android去掉标题栏和全屏都是件很容易的事情,最常见的有两种方法:

第一:在程序代码中实现
Java代码this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏

this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
注意:这两行代码要写在页面显示之前,即setContentView(R.layout.XXX)之前
第二:在AndroidManifest.xml配置文件中实现标签android:theme
Java代码

android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
注意:如果不需要全屏,只需要写成android:theme="@android:style/Theme.NoTitleBar即可
总结:二者的区别
如果使用第一种方法,在Activity启动时会有短暂的标题栏和信息栏的出现,随后会消失。
使用第二种方法这不会出现这种情况,个人推荐使用第二种方式,看起来比较流畅。

Android Activity 常用功能设置(全屏、横竖屏等)

Activity全屏设置

方式1:AndroidManifest.xml

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

方式2:代码实现

requestWindowFeature(Window.FEATURE_NO_TITLE);  // 隐藏标题栏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  // 隐藏状态栏

注意:设置全屏的俩段代码必须在setContentView(R.layout.main) 之前,不然会报错。


Activity横竖屏设置

方式1:AndroidManifest.xml

android:screenOrientation="landscape" /> // 或者 “portrait

方式2:代码实现

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

获取横屏方向

int orientation = this.getResources().getConfiguration().orientation;

orientation 的常用取值可以为 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE(横屏) 或 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT(竖屏)


Activity屏幕一直显示

1:AndroidManifest.xml添加权限

2:代码实现

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置

首先,有一点需要声明,其实在android中,画布Canvas的高宽其实是屏幕的高宽。

如此一来,获得屏幕高宽的方法就很多了:

1.

Java代码
  1. WindowManager windowManager = getWindowManager();   
  2.   
  3. Display display = windowManager.getDefaultDisplay();   
  4.   
  5. screenWidth = display.getWidth();   
  6.   
  7. screenHeight = display.getHeight();  
[java] view plain copy print ?
  1. WindowManager windowManager = getWindowManager();  
  2.   
  3. Display display = windowManager.getDefaultDisplay();  
  4.   
  5. screenWidth = display.getWidth();  
  6.   
  7. screenHeight = display.getHeight();  



2.

Java代码
  1. DisplayMetrics dm = new DisplayMetrics();   
  2.   
  3. this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity  
  4.   
  5. screenWidth =dm.widthPixels;   
  6.   
  7. screenHeight =dm.heightPixels;  
[java] view plain copy print ?
  1. DisplayMetrics dm = new DisplayMetrics();  
  2.   
  3. this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity  
  4.   
  5. screenWidth =dm.widthPixels;  
  6.   
  7. screenHeight =dm.heightPixels;  

以上两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效。

3.

还可以在onDraw中由canvas来获得

Java代码
  1. screenWidth =canvas.getWidth();   
  2.   
  3. screenHeight =canvas.getHeight();  
[java] view plain copy print ?
  1. screenWidth =canvas.getWidth();  
  2.   
  3. screenHeight =canvas.getHeight();  



而视图的高宽则是大多数人所认为的canvas的高宽,其实他所指的是除了任务栏和状态栏的高宽,主要有如下方法:

1.

Java代码
  1. viewWidth=this.getWidth();   
  2.   
  3. viewHeight=this.getHeight();  
[java] view plain copy print ?
  1. viewWidth=this.getWidth();  
  2.   
  3. viewHeight=this.getHeight();  



2.重写view的onSizeChanged,该方法会在onCreate之后,onDraw之前调用

Java代码
  1. protected void onSizeChanged(int w, int h, int oldw, int oldh) {   
  2. viewHeight=h;   
  3. viewWidth=w;   
  4. super.onSizeChanged(w, h, oldw, oldh);   
  5. }  
[java] view plain copy print ?
  1. protected void onSizeChanged(int w, int h, int oldw, int oldh) {  
  2. viewHeight=h;  
  3. viewWidth=w;  
  4. super.onSizeChanged(w, h, oldw, oldh);  
  5. }  

任务栏、状态栏的高宽的高宽我目前还不清楚,不过从网上查找可知:

引用 frameworks/core/res/values/themes.xml
25dip
frameworks/core/res/values/dimens.xml
25dip

在一个activity中如果要获取高宽,最好是放在onSizeChanged中比较保险。

以上是我对android获得高宽的一点总结,如果有错误的地方,欢迎留言探讨。

另外,还有对屏幕显示的一些设置:

//设置为无标题

Java代码
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);  
[java] view plain copy print ?
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);  



//设置为全屏模式getWindow().setFlags

Java代码
  1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  
[java] view plain copy print ?
  1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  



//设置为横屏

Java代码
  1. setRequesteOrientation(ActivityInfo.SCREEN_ORIENTATION_LADSCAPE);  

转自 http://yuyanshan.javaeye.com/blog/750043

Android getWindow().setFlags方法

//设置窗体全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 

//设置窗体始终点亮

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

//设置窗体背景模糊

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

设置Activity的背景颜色

 

前提是需要在value目录下的string.xml文件中加入一段代码:

 

Xml代码  
  1. <drawable name="bkcolor">#ff00ffdrawable>  

 

 

 

其中的颜色值可以自己设置。

 

以下为两种方法:

一.从代码中设置

1.首先导入必要的包:

Java代码  
  1. import android.content.res.Resources;  
  2. import android.graphics.drawable.Drawable;  

 

 

2.然后在onCreate()函数中加入以下代码:

Java代码  
  1. Resources res = getResources();  
  2. Drawable drawable = res.getDrawable(R.drawable.bkcolor);  
  3. this.getWindow().setBackgroundDrawable(drawable);  

  

二.从布局文件(例如main.xml)中设置

在<...layout>标签中加上以下代码

Xml代码  
  1. android:background="@drawable/bkcolor"

Android自适应屏幕方向、大小和分辨率

Android自适应屏幕方向、大小和分辨率

屏幕大小

1、不同的layout

      Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

2、hdpi、mdpi、ldpi

      前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。

drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

  1. drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
  2. drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
  3. drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

屏幕方向

1、横屏竖屏自动切换

      可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。

2、禁用自动切换

只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。

限制此页面横屏显示

Xml代码  
  1. Android:screenOrientation="landscape"  
Xml代码  
  1.   

 

 

限制此页面数竖屏显示

Xml代码  
  1. Android:screenOrientation="portrait"   

 

 

 

 

字体自适应大小

方法1:

首先根据不同分辨率获取不同字体大小。 
在RES里创建
values-480x320/strings.xml 里面设置

Xml代码  
  1. <dimen name="Text_size">30pxdimen>  

 和 
values-800x400/strings.xml 里面设置

Xml代码  
  1. <dimen name="Text_size">40pxdimen>   

 

 

分别代表480X320 和 800X400分辨率情况下 字号为30px和40px;

 

在java文件中这样调用

Java代码  
  1. int sizeOfText = (intthis.getResources().getDimension(R.dimen.Text_size);  

 

方法2:

在视图的onsizechanged里获取视图宽度,一般情况下默认宽度是320,所以计算一个缩放比率rate = (float) w/320   (w是实际宽度)
然后在设置字体尺寸时 paint.setTextSize((int)(8*rate));   (8是在分辨率宽为320 下需要设置的字体大小实际字体大小 = 默认字体大小 x  rate)



6,设置主Activity.

主Activity必须在manifest文件中使用标签,并包含MAIN action和LAUNCHER 内容。例如:

                    
  1. android:name"@string/app_name">
  2. android:name="android.intent.action.MAIN" />
  3. android:name="android.intent.category.LAUNCHER" />

注: 当你创建一个新的Android项目,默认的项目会包含一个Activity类,并且此类会有如上的声明。

如果任何一个activity声明都不包含android.intent.action.MAINandroid.intent.category.LAUNCHER,那么您的应用程序的图标就不会出现在android的主屏菜单列表上了。.


7,销毁Activity的特例

注意 :一般来说,系统会在调用onPause()方法和onStop()之后才调用onDestory()方法,但是,有一种情况是例外的,那就是在你在onCreate()方法中调用finish()方法。在一些情况下,你的Activity作为一个临时决定的操作对象而去启动另外一个Activity时,你可能需要在onCreate()方法中调用finish()方法去销毁Activity,在这种情况中,系统会直接调用onDestroy()方法而不用再去调用其他的生命周期函数。

Android结束Activity退出程序的一种有效方法

关于完全退出Android程序,网上这方面的帖子很多,方法也很多。记得当时自己写的第一个比较完整的项目的时候就遇上了这个问题,由于对Activity的生命周期了解不够,又使用了TabActivity使得层次关系比较复杂,在程序中添加的“退出”菜单项经常无法完全退出,之后网上各种搜索,各种方法也试过了,什么System.exit(0)啊,结束进程之类的啊,都依然无效果。

后面才发现的这个方法。思路也很简单,回想自己当初为了解决这个问题时的苦苦寻觅,遂决定将其共享,供遇到此问题人士作为参考。

 

啰嗦够了,上思路:添加一个全局变量作为程序退出的标记(boolean类型),当需要退出程序时置为true,程序中每个Activity的onStart方法中对该变量进行判断,为true就结束自己。

看代码吧:

使用Application来保存一个全局变量isProgramExit。(对Application使用不熟悉的话查看相关资料)

public class MyApplication extendsApplication {// 程序退出标记private static boolean isProgramExit = false;public void setExit(booleanexit) {isProgramExit= exit;}public booleanisExit() {return isProgramExit;}}

 

 

在你退出时需要结束的每个Activity的 onStart方法加上以下代码:

protected voidonStart() {super.onStart();MyApplication mApp = (MyApplication)getApplication();if(mApp.isExit()) {finish();}}

 

比如,程序中有三个Activity,A —— B —— C;现在在C中有个按钮,点击退出整个程序。按照上面说的,在A和B的onStart方法中加入判断代码(C中可以不加),C中点击按钮时执行:

MyApplication mApp = (MyApplication)getApplication();mApp.setExit(true);finish();

 

这样C结束了自己,按照流程会回到B,然后B中会进行判断,因为退出条件满足,结束自己;再回到A,同样也结束……

 

可以看到,这种方法并不高明,甚至有些复杂,因为要在每个Activity的onStart中都加上判断。但不可否认的是这种方法却是绝对有效的,不管你的程序中Activity如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。

所以,有遇到程序退出问题的朋友可以作为参考。

感觉这个方法似乎还存在些问题吧。如果直接这样写,那么虽然退出了程序,但是这只是让程序变成了空进程,如果这个时候再点击程序,那么Application中的全局变量应该还是有效的,这样将导致程序在启动的时候就直接退出。应该在activity的oncreate方法中重新设置这个值吧,但是这样会有一个潜在的问题,比如我们从启动的activity是A-B-C,那么这样栈里就依次存放着A,B,C, 如果此时由于某种原因导致A被销毁了(这种情况应该是存在的, onSaveInstanceStatus方法就是针对这种情况吧),那么这是用这个方法退出的话,当取得栈中A的时候,由于A被销毁了,这是会调用A的oncreate方法,而oncreate方法中如果又重新设置了全局变量的值,这时就不能正常退出了。 所以是不是需要在onSaveInstanceStatus这个方法里做一些特殊处理?

动态的修改自定义custom title


在android中 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.text_title);     使用上面的话时 他所产生的并不是把以前的用现在的替换只是用   R.layout.text_title放在了默认样式的上面,如果你想通过一个按钮修改标题
以及view上的消息有两种方法:
private void setCustomTitleFeatureInt(int value) {  
       try {        // retrieve value for com.android.internal.R.id.title_container(=0x1020149)      
         int titleContainerId = (Integer) Class.forName(               
         "com.android.internal.R$id").getField("title_container").get(null);       
         // remove all views from titleContainer     
           ((ViewGroup) getWindow().findViewById(titleContainerId)).removeAllViews();     
             // add new custom title view       
              getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, value);
                  } catch(Exception ex) {       
                  // whatever you want to do here..    }
                  }

这种方法是取消以前的 不过这种方法可靠性不好
2.你可以用隐藏的方式:
findViewById(R.id.custom_title_1).setVisibility(View.GONE);getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_2);


1.得到屏幕的screen dimensions
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();int height = display.getHeight();

2. 播放 gif图片在android
@Override protected void onDraw(Canvas canvas) {          
canvas.drawColor(0xFFCCCCCC);                      
  Paint p = new Paint();           
  p.setAntiAlias(true);         
     
     canvas.drawBitmap(mBitmap4, 210, 170, null);           
     mDrawable.draw(canvas);           
     long now = android.os.SystemClock.uptimeMillis();          
      if (mMovieStart == 0) {   // first time                mMovieStart = now;            }           
      if (mMovie != null) {               
        int dur = mMovie.duration();               
           if (dur == 0) {                   
              dur = 1000;                }               
              int relTime = (int)((now - mMovieStart) % dur);               
              mMovie.setTime(relTime);             
                mMovie.draw(canvas, getWidth() - mMovie.width(),                         
                  getHeight() - mMovie.height());              
                   invalidate();           
                   }      
                    }
http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.html
@Override
                    protected void onDraw(Canvas canvas) {
                        if(movie != null) {
                                long now = android.os.SystemClock.uptimeMillis();
                                        int dur = Math.max(movie.duration(), 1);
                                        // is it really animated?       
                                        int pos = (int)(now % dur);       
                                        movie.setTime(pos);       
                                        movie.draw(canvas, x, y);
                                         invalidate();   
                                 }}

4. 打开sd卡中的sqllite
File dbfile = new File("/sdcard/mydb.sqlite" );
                                  SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);

5.得到手机的IMEI
((TelephonyManager) getSystemService=(Context.TELEPHONY_SERVICE)).getDeviceId();

6. 不让程序 生成一个appliation 去掉

当然你的让你的程序 被引导启动

7.使用appliation 的id 可以获得不同appliation的数据:
android:sharedUserId="string" 在主xml中添加上面一句话,然后签名也要一样 两个app的id也要设置成一样 如都是string 那么这两个程序就可以相互访问彼此的数据,也可以在同一个process中了
8.判断相机设备存在不
private android.hardware.Camera mCameraDevice;
try { 
    mCameraDevice = android.hardware.Camera.open();}
catch (RuntimeException e) {  Log.e(TAG, "fail to connect Camera", e);

9使listView 透明
android:background="#00000000"
android:cacheColorHint="#00000000"
或者
android:background="@android:color/transparent"

•The background android screen image should be visible.
屏幕的背景图像可以看见
manifest file 添加attribute 到 activity.
android:theme="@android:style/Theme.Dialog"


Android开发:定制Activity的标题栏(Titlebar)

缺省的情况下,通常见到Activity的标题栏(Titlebar)是这样的(红色框内):


HandleContacts是Activity的标题。

有时候,我们希望能改变一下这样单调的状况。比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。

1.    首先如下创建一个Android项目

 

2.    将图片magnifier.png拖入该项目的res/drawable-mdpi文件夹下。magnifier.png图片的样子是这样的:


3.    在该项目的res/layout文件夹下,创建一个布局titlebar.xml,这个布局将用于定制Activity的标题栏

编辑titlebar.xml,使其内容如下:

<?xmlversion="1.0" encoding="utf-8"?>

       xmlns:Android="http://schemas.android.com/apk/res/android"

       android:orientation="horizontal"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content">

      

      

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/magnifier"

                android:gravity="bottom"

       />

      

                 android:layout_width="wrap_content"

                 android:layout_height="38dip"

                 android:text="@string/app_name"

                 android:textColor="#FFFFFFFF"

                 android:textSize="14dip"

                 android:paddingTop="1dip"

       />

      

      

                   android:id="@+id/searchparameter"

                   android:layout_width="wrap_content"

                   android:layout_height="38dip"

                   android:text="ABCDEFGHIJ"

                   android:textSize="14dip"

                   android:layout_margin="1dip"

         />