开发android用到的技术,[转载]Android 开发中用到的一些小技术

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,应该是代表显示器,可以得到长、宽,以及屏幕的方向(横向还是纵向)等。

a4c26d1e5885305701be709a3d33442f.png

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(与刻度无关的像素)放大像素– 主要处理字体的大小。

屏幕大小和密度对照表

a4c26d1e5885305701be709a3d33442f.png

下面是在manifest中设置app在不同分辨率时,是否支持多密度的方法。

...

android:smallScreens="true"

android:normalScreens="true"

android:largeScreens="true"

android:xlargeScreens="true"

android:anyDensity="true" />

a4c26d1e5885305701be709a3d33442f.png

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">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值