1 Android 的振动器
Vibrator vv=(Vibrator)
getApplication().getSystemService(Service.VIBRATOR_SERVICE);
//震半秒钟 vv.vibrate(500); vv.vibrate(new long[]{10, 100, 20, 200},
-1); 关 于vv.vibrate(new long[]{10, 100, 20, 200}, -1); 表示停10ms, 震100ms,
停20ms,震200ms
-1 表示不重复!非-1表示从指定的下标开始重复震动;如第二个参数是0,
则一圈一圈的循环震动下去了;如果是2,这第一遍震动后,从“20”这个参数开始再循环震动!
一般用vv.vibrate(500);//震半秒钟
2 Android 模拟器窗口的设置
Android
模拟器窗口默认值的分辨率太大 也看着不爽 那么如何改变模拟器大小呢?选择Windows->Android SDK and AVD
Manager,点开,里面就有你创建的AVD了,你选中一个,然后点start按钮,会出现一个窗口 在Launch Options里选择
Scale display to real size ,然后 Screen Size (in) 选择适当的大小*,在Monitor
dpi 上输入*, 调到自己觉得舒服的大小,这样就可以了。
3 获取android屏幕大小
代码本身很简单,比如在Activity的onCreate方法中:Log.d("tag1",
"width>>"
+ this.getWindow().getWindowManager().getDefaultDisplay()
.getWidth()
+ " height>>"
+ this.getWindow().getWindowManager().getDefaultDisplay()
.getHeight());
在Nexus one下测试,结果是w:480,h:800,这个数值不随屏幕横向或纵向而变化。这里牵扯到多个对象:
• Activity
• Window:Activity打开一个Window(可以认为Activity包含一个Window),可以在Window中加入View,目前只有一个实现Window的类,PhoneWindow,以后也许会有PadWindow?
• WindowManager:Activity包含一个WindowManager,可以通过它立即删除window中的view,还可通过它得到Display
• Display,应该是代表显示器,可以得到长、宽,以及屏幕的方向(横向还是纵向)等。
Display对象获取屏幕高宽 :获取display对象
Activity中getWindowManager().getDefaultDisplay()
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
由display对象设置DisplayMetrics高宽值,通过DisplayMetrics对象获取屏幕高宽,有点多此一举:
getWidth() 返回显示界面宽度即屏幕宽度
getHeight() 返回显示界面高度即屏幕高度
View获取屏幕参数值方法
4 android 各种常用单位的解释
一直对px、dip、sp、dp这几个单位概念很模糊。网上查了下,基本理论上是清楚了。
1.px (pixels)(像素):屏幕上的点 ,与密度相关。密度大了,单位面积上的px会比较多。
2.dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持WVGA、HVGA和QVGA
5进制空间推荐使用这
个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有
缩放的感觉。如果用px的话,320px占满HVGA的宽度,到WVGA上就只能占一半不到的屏幕了,那一定不是你想
要的。
3.sp(与刻度无关的像素)放大像素– 主要处理字体的大小。
屏幕大小和密度对照表
下面是在manifest中设置app在不同分辨率时,是否支持多密度的方法。
...
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
gravity
本view内部信息的排列方式,layout_gravity是本view再父控件中的排列方式.但是在代码中imageview
setlayoutparmes中设置,layoutparames.gravity貌似是设置自己本身空间的排列方式,再freamelayout中会产生叠加,哎,继续研究吧
5 像素点和设备独立像素点的区别
按照获取android屏幕大小的示例在Motorola
Milestone测试到的结果是:569×320。这是因为使用的单位是dip,即device independent
pixels。这里要提到另外一个概念,density,直译是密度,在显示领域里表示每平方英寸的像素点密度,每个像素点可以近似看作屏幕上的一个发光点,点的密度越大,则显示效果越清晰,在单位面积下显示内容越多。
Android设备的特点是屏幕尺寸很多,因此为了显示能尽量和设备无关,提出了dip,参照的density是160。因此,可以用如下公式换算:
dip=px * 160/240
可出Milestone的实际像素点为:
长:569×3/2=853.5
宽:320×3/2=480
这里要注意,显示屏不是模拟设备,是数字设备,因此不可能出现半个像素点的情况,肯定是px换算为dip产生的误差,因此应该是854px。
6 设置全屏的方法
在开发中我们经常需要把我们的应用设置为全屏,这里我所知道的有俩中方法,一中是在代码中设置,另一种方法是在配置文件里改!
一、在代码中设置:
package com.android.tutor;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class OpenGl_Lesson1 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//无title requestWindowFeature(Window.FEATURE_NO_TITLE); //全屏 getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN
, WindowManager.LayoutParams.
FLAG_FULLSCREEN); setContentView(R.layout.main);
}
} 在这里要强调一点,设置全屏的俩段代码必须在setContentView(R.layout.main) 之前,不然会报错。
二、在配置文件里修改
encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.tutor" android:versionCode="1" android:versionName="1.0">
android:label="@string/app_name">