您的位置:首页 > 移动开发 > Android开发

Android的一些小知识点

2012-11-06 10:57 369 查看

1.android获得硬件软件相关信息

2.android如何实现国际化

3.android进度条

在 Activity
的 Title 中加入进度条

在 Activity 的标题栏中显示进度条不失为一个好办法,下面是实现代码:

Java代码

// 不明确进度条

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

setContentView(R.layout.main);

setProgressBarIndeterminateVisibility(true);

// 明确进度条

requestWindowFeature(Window.FEATURE_PROGRESS);

setContentView(R.layout.main);

setProgress(5000);

分类:
android

锁定 Activity
运行时的屏幕方向

Xml代码

<activity android:name=".EX01"

android:label="@string/app_name"

android:screenOrientation="portrait" // 竖屏 , 值为 landscape 时为横屏

…………

</activity>

4.android初始化屏幕

全屏的 Activity

要使一个 Activity 全屏运行,可以在其 onCreate()方法中添加如下代码实现:

Java代码

// 设置全屏模式

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

WindowManager.LayoutParams.FLAG_FULLSCREEN);

// 去除标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

锁定 Activity
运行时的屏幕方向

Xml代码

<activity android:name=".EX01"

android:label="@string/app_name"

android:screenOrientation="portrait" // 竖屏 , 值为 landscape 时为横屏

…………

</activity>

5.Android ListView样式

下面将对上述代码,做详细的解释,listView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到listView的长度(这也是为什么在开始的第一张图特别的标出列表长度),然后根据这个长度,调用getView()逐一绘制每一行。如果你的getCount()返回值是0的话,列表将不显示同样return
1,就只显示一行。

系统显示列表时,首先实例化一个适配器(这里将实例化自定义的适配器)。当手动完成适配时,必须手动映射数据,这需要重写getView()方法。系统在绘制列表的每一行的时候将调用此方法。getView()有三个参数,position表示将显示的是第几行,covertView是从布局文件中inflate来的布局。我们用LayoutInflater的方法将定义好的vlist2.xml文件提取成View实例用来显示。然后将xml文件中的各个组件实例化(简单的findViewById()方法)。这样便可以将数据对应到各个组件上了。但是按钮为了响应点击事件,需要为它添加点击监听器,这样就能捕获点击事件。至此一个自定义的listView就完成了,现在让我们回过头从新审视这个过程。系统要绘制ListView了,他首先获得要绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(实际上是一个ViewGroup),然后再实例并设置各个组件,显示之。好了,绘制完这一行了。那再绘制下一行,直到绘完为止。在实际的运行过程中会发现listView的每一行没有焦点了,这是因为Button抢夺了listView的焦点,只要布局文件中将Button设置为没有焦点就OK了。

6.Android 完全退出程序使用广播机制

//写一个广播的内部类,当收到动作时,结束activity

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

unregisterReceiver(this);//这一句必须加上,不然虽然能退出,但报很多错误

finish();//到这里,多个activity可以关闭掉程序了 但是进程仍然存在,因此加上了下边一句话,可以杀死进程

android.os.Process.killProcess(android.os.Process.myPid());

}

};

7.Android RelativeLayout属性

Android RelativeLayout
属性

// 相对于给定ID控件

android:layout_above
将该控件的底部置于给定ID的控件之上;

android:layout_below
将该控件的底部置于给定ID的控件之下;

android:layout_toLeftOf
将该控件的右边缘与给定ID的控件左边缘对齐;

android:layout_toRightOf
将该控件的左边缘与给定ID的控件右边缘对齐;

android:layout_alignBaseline
将该控件的baseline与给定ID的baseline对齐;

android:layout_alignTop
将该控件的顶部边缘与给定ID的顶部边缘对齐;

android:layout_alignBottom
将该控件的底部边缘与给定ID的底部边缘对齐;

android:layout_alignLeft
将该控件的左边缘与给定ID的左边缘对齐;

android:layout_alignRight
将该控件的右边缘与给定ID的右边缘对齐;

// 相对于父组件

android:layout_alignParentTop
如果为true,将该控件的顶部与其父控件的顶部对齐;

android:layout_alignParentBottom
如果为true,将该控件的底部与其父控件的底部对齐;

android:layout_alignParentLeft
如果为true,将该控件的左部与其父控件的左部对齐;

android:layout_alignParentRight
如果为true,将该控件的右部与其父控件的右部对齐;

// 居中

android:layout_centerHorizontal
如果为true,将该控件的置于水平居中;

android:layout_centerVertical
如果为true,将该控件的置于垂直居中;

android:layout_centerInParent
如果为true,将该控件的置于父控件的中央;

// 指定移动像素

android:layout_marginTop
上偏移的值;

android:layout_marginBottom
下偏移的值;

android:layout_marginLeft
  左偏移的值;

android:layout_marginRight
 右偏移的值;

example:

android:layout_below = "@id/***"

android:layout_alignBaseline = "@id/***"

android:layout_alignParentTop = true

android:layout_marginLeft = “10px”

8. Android如何设置图片的大小

<ImageView

android:layout_width="50dp"

android:layout_height="50dp"

android:scaleType="fitXY" />

也可以通过代码去实现

ImageView iv = (ImageView) findViewById(R.id.iv);

iv.setLayoutParams(new LayoutParams(300, 300));

iv.setScaleType(ScaleType.FIT_XY);

9.Android视频播放器

1.使用surfaceview
主要是用来做渲染的

2.andorid 使用mediaplayer类来实现视频的播放需要将mediaplayer渲染到 surfaceview.getHolder()

3.surface在离开前台时
会销毁 要监听他的surfaceview的创建销毁改变的监听的方法

4.播放视频时需呀监听他的prepared方法
准备好了就播放

5.android 目前只支持渐进式下载的视频
不支持实时流媒体

10.Androi调用自己的播放器

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType( Uri.parse("http://192.168.30.251/fwpbaGYpMnCAHVTbDqHY3tuVlE.mp4"),"video/*");

11.Android Content provider内容提供器

1使用contentprovider

标准的接口
联系人

2.ContentResolver获得

3.URI

content:// 获得数据的一个字符串片段

4.UriMather

12.Android避免内存泄露的方法

当Activity中有对象的生命周期大于Activity时
请使用getApplicationContext()方法

1.
不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的

2. 对于生命周期长的对象,可以使用application context

3.
避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化

13.设置背景图片

Resources resources=getBaseContext().getResources();

Drawable hippoDrawable=resources.getDrawable(R.drawable.icon);

tv1.setBackgroundDrawable(hippoDrawable);

14.取得手机屏幕大小DisplayMetrics

TextView widthText=(TextView)findViewById(R.id.widthText);

DisplayMetrics dm=new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

String str="手机屏幕宽为:"+dm.widthPixels+"
高:"+dm.heightPixels;

widthText.setText(str);

15.跑马灯效果:类似公交车滚动广告

android:ellipsize设置文字过长时,该控件如何显示。有如下值:start:省略号在前/end省略号在后面/middle省略号在中间/marquee跑马灯方式展示(动画横向移动)

android:marqueeRepeatLimit设置重复滚动的次数,marquee_forever无限次滚动

android:focusableInTouchMode是否在触摸模式下获取焦点

android:focusable控件是否能够获取焦点

android:singleLine="true"

android:focusable="true"

android:ellipsize="marquee"

android:marqueeRepeatLimit="marquee_forever"

android:focusableInTouchMode="true"

16.android隐藏键盘

EditText et=(EditText)findViewById(R.id.edit);

et.setInputType(InputType.TYPE_DATETIME_VARIATION_NORMAL);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: