首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android学习札记

2012-08-17 
android学习笔记1 获取屏幕的宽和高1)getWindowManager().getDefaultDisplay().getWidth()? ???getWindow

android学习笔记

1 获取屏幕的宽和高
1)getWindowManager().getDefaultDisplay().getWidth();
? ???getWindowManager().getDefaultDisplay().getHeight();

2)((WindowManager) getSystemService(WINDOW_SERVICE) .getDefaultDisplay().getWidth();
? ???((WindowManager) getSystemService(WINDOW_SERVICE) .getDefaultDisplay().getHeight();

2 加载Animation
Animation animation = AnimationUtils.loadAnimation(this, R.anim.push_left_in);

3 判断字符串s中是否包含c字符
boolean isContains = s.contains(c);

4 获得service和activity本身实体的方法
private static ServiceName/ActivityName instance = null;
在onCreate()中使用instance = this; 来存储自己的实体。
public void onCreate(){
super.onCreate();
name = this;
}

编写一个静态方法返回实体
public static ServiceName/ActivityName getInstance(){
return instance;
}

5 获得系统当前语言
1)String currentLanguage = getResources().getConfiguration().local.getCountry();

2)IActivityManager am = ActivityManagerNative.getDefault();
? ?? ?? ?? ? Configuration config = am.getConfiguration();
? ?? ?? ?? ? String currentLanguage = config.locale.toString();

6 锁定横竖屏
在Manifest.xml中的相应的activity中加入如下属性:
android:screenOrientation = "portrait"
//设置activity只显示竖屏
android:screenOrientation= "landscape"
//设置activity只显示横屏

7 横竖屏切换不销毁当前activity
在Manifest.xml中的相应的activity中加入如下属性:
android:configChanges="orientation|keyboardHidden"
在activity中重写public void onConfigurationChanged(Configuration newConfig)方法。

8 在activity中判断当前横竖屏状态
Configuration newConfig = this.getResources().getConfiguration();
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
当前为竖屏状态
}
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
当前为横屏状态
}


9 检查网络是否可用
? ?? ???ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
? ?? ???NetworkInfo info = cm.getActiveNetworkInfo();
? ?? ???boolean hasNetwork = false;
? ?? ???if (info != null) {
? ?? ?? ?? ?hasNetwork = info.isAvailable();
? ?? ???}


10 常用主题
android:theme="@android:style/Theme.Dialog"将一个Activity显示为对话框的模式
android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序的标题栏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序的标题栏,并全屏
android:theme="@android:style/Theme.Light"将一个Activity的背景设置为白色
android:theme="@android:style/Theme.Light.NoTitleBar"将一个Activity的背景设置为白色并无标题栏

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"将一个Activity的背景设置为白色并无标题栏并全屏
android:theme="@android:style/Theme.Black" 将一个Activity的背景设置为黑色
android:theme="@android:style/Theme.Black.NoTitleBar" 将一个Activity的背景设置为黑色
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 将一个Activity的背景设置为黑色并无标题栏并全屏
android:theme="@android:style/Theme.Wallpaper" 用系统桌面为应用程序背景

android:theme="@android:style/Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,并无标题栏
android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,并无标题栏并全屏android:theme="Translucent"android:theme="Theme.Translucent.NoTitleBar"android:theme="Theme.Translucent.NoTitleBar.Fullscreen"android:theme="Theme.Panel"

android:theme="Theme.Light.Panel"

11唤醒屏幕

PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
//获得cpuWakeLock
PowerManager.WakeLock cpuWakeLock =??powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK
? ?? ?? ?? ?? ? | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, Log.LOGTAG);
cpuWakeLock.acquire();

//获得screenWakeLock
PowerManager.WakeLock screenWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK
? ?? ?? ?? ?? ? | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, Log.LOGTAG);
screenWakeLock.acquire();

//释放cpuWakeLock
cpuWakeLock.release();

//释放screenWakeLock
screenWakeLock.release();

12 判断当前是否为锁屏状态
boolean isLocked = false;
KeyguardManager km = (KeyguardManager) getSystemService(
? ?? ?? ?? ?? ?? ?? ?? ?Context.KEYGUARD_SERVICE);
if (km.inKeyguardRestrictedInputMode()) {
? ?? ?? ?? ?? ???isLocked = true;
? ?}

13 MotionEvent的getX(),getY()与getRawx(),getRawY()的区别
如果是Activity实现OnTouchListener接口,需要重写onTouch(View view,MotionEvent event)这个方法,getRawX()和getRawY()获得的是相对屏幕的位置(整个屏幕),getX()和getY()获得的永远是view的触摸位置坐标(这两个值不会超过view的长度和宽度)。也就是getX()永远是你触摸的view的x位置,这个x就是鼠标相对于这个view的位置;getY()也是同样的处理。
getRawX()是你触摸的view的x位置,这个位置是相对于屏幕的位置,getRawY也是同样的处理。
还能获取触摸标题栏时的坐标位置,但是触摸状态栏时的坐标位置不能获得。

如果重写Activity的onTouchEvent(MotionEvent event),这个时候获得的是屏幕点击位置的坐标。getRawX()和getRawY()获得的是相对屏幕的位置(整个屏幕),getX()和getY()获得的永远是view的触摸位置坐标(这两个值不会超过view的长度和宽度)。也就是getX()永远是你触摸的view的x位置,这个x就是鼠标相对于这个view的位置;getY()也是同样的处理。而且标题栏和状态栏时的坐标位置都是不能获得。
(注:Activity上有两段宽度:一个是状态栏,一个是标题栏,每一个宽度都占了25像素)

14 view的getTop(),getBottom(),getLeft(),getRight()方法所获得的值
getTop()方法可以得到一个View的位置,这个方法返回的是相对于其父元素的位置,例如,如果getTop()返回20,则表示它和其直接父元素的上边界的距离是20像素。getBottom(),getLeft(),getRight()方法的用法与getTop()方法相同。另外,有一些方法的存在只是为了写程序的方便,如getRight()和getBottom()。getRight()和getLeft()+getWidth()的作用是一样的。而getBottom()和getTop()+getHeight()的作用是一样的。

  终于有人给回复了  谢谢了!!!!!

热点排行