Archive for 二月 2011

VideoView布局视频居中的问题

默认情况下,如果视频分辨率小于屏幕分辨率,VideoView在播放视频时都是在左上角的,影响程序美观。
用下面的方法完美解决,视频居中播放


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  >
  <VideoView 
    android:id="@+id/VideoView01" 
    android:layout_width="fill_parent"
   	android:layout_height="fill_parent"
     />
</LinearLayout>

关键在父元素的layout_gravity,默认不设置是left

Android 2.2关闭所有Activity完全退出程序方法

关闭所有Activity完全退出程序,网络上的方法基本都试过,但在android 2.2下只有这个有效果。


		         Intent startMain = new Intent(Intent.ACTION_MAIN);
		         startMain.addCategory(Intent.CATEGORY_HOME);
		         startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		         startActivity(startMain);
		         System.exit(0);

执行后在任务管理器看不到

启动其他程序的Activity

有时候,我们需要启动系统中安装的其他软件来做接下去的处理,可以用下面的方法做跳转:


				Intent intent=new Intent();
				intent.setClass("包名","包名.Activity名");
				channel.this.startActivity(intent);

如果系统中不存在该包,或Activity,会FC。查看正在运行的程序包名,Activity名可以在连接手机的情况下,点击Eclipse右上角的Hierarchy View,就是在DDMS那,默认没显示,自己添加。

启动已经启动的Activity(激活OnStop状态的Activity)

如果直接用下面的方法启动OnStop状态的Activity


				Intent intent=new Intent();
				intent.setClass(channel.this, main.class);
				channel.this.startActivity(intent);

相当于重新启动一个新的Activity,会重新执行OnCreate方法,导致系统资源的浪费。可以在Intent里加上下面一句来解决:


intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

这样,启动的Activity就不会再执行OnCreate方法,直接就OnRestart.

Android UI设计 屏幕底部的菜单栏 动画切换Activity

替换后:最终效果如下图,点击菜单会切换Activity,有动画效果。

从早上起床就研究这个东西,因为之前一直都直接用系统提供的几个控件,从来没搞过图片背景、嵌套布局什么的,今天是第一次,没什么经验,花了一个上午才搞定。
简单介绍一下思路,使用LinearLayout嵌套,分三部分,第一部分是顶部的标题栏,第二部分是内容,第三部分是底部菜单。参考网上的代码,一路顺风顺水搞定,但在模拟器测试时出了问题(开发时用I9000),模拟器的屏幕是HVGA的,在上面运行看不到菜单栏。这个问题困扰了很久,网上也搜不出有用的答案(说是用dip,不用px,我开始就是用dip的),最后还是自己冥思苦想解决了问题,解决方法也很简单,就是让内容fill_parent,然后菜单layout_marginTop取个负值。
2011年7月18日更新:其实上面的问题可以用相对布局RelativeLayout解决,很简单,具体用法自己搜索一下吧,有时间我会写篇
Continue reading ‘Android UI设计 屏幕底部的菜单栏 动画切换Activity’ »

播放视频弹出选择播放器对话框 调用外部播放器在线播放视频

在程序中除了用VideoView可以播放视频外,也可以利用Intent,调用外部系统播放器来播放视频。
Continue reading ‘播放视频弹出选择播放器对话框 调用外部播放器在线播放视频’ »

以对话框样式显示Activity

先看效果图:

图中显示了一个activity启动另一个activity的效果,布局文件是同一个。其中被启动的activity2是以对话框样式显示,不完全覆盖住启动它的activit1,类似alertDialog。这与普通的activity不同,默认情况下,activity2会完全遮住activity1,启动activity2后,会调用activity1的onStop方法,而这种以对话框样式显示的activity不会。
实现方法:
在AndroidManifest.xml注册activity2的时候,给activity2加上下面的属性:


<activity android:name=".activity2" android:theme="@android:style/Theme.Dialog"></activity>

其他步骤与普通的activity相同。

搬家

今天把网站搬到了韩国,大家是不是感觉快了点呢?