单帧布局是很简单的,在这种布局下每个添加的子控件都会被放在布局的左上角,并覆盖在前
一个子控件的上层,即帧布局中的每一个组件都代表一个画面,默认以屏幕左上角作为( 0,0 )
坐标,按组件定义的先后顺序依次逐屏显示, 后面出现的会覆盖前面的画面 。
用该布局可以实现动画效果 。下面,我们用三幅图片实现动画效果。
第一步:编写 framelayout.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id = "@+id/frame"
>
</FrameLayout>
第二步:通过编写activity 实现FrameLayout的
public class Test001Activity extends Activity {
FrameLayout frame = null;
private boolean flag = true;
class MyHandler extends Handler{
int i = 0 ;
public void handleMessage(Message msg){
i++;
show( i % 3 );
show( i % 3 );
sleep(50);
}
public void sleep(long delayMillis) {
// TODO Auto-generated method stub
if(flag ){
sendMessageDelayed(obtainMessage(0), delayMillis);
}
}
private void show(int j) {
// TODO Auto-generated method stub
Drawable a = getResources().getDrawable(R.drawable.a);
Drawable b = getResources().getDrawable(R.drawable.b);
Drawable c = getResources().getDrawable(R.drawable.c);
switch (j){
case 0:
frame.setForeground(a);
break;
case 1:
frame.setForeground(b);
break;
case 2:
frame.setForeground(c);
break;
}
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.framelayout);
frame = (FrameLayout)findViewById(R.id.frame);
final MyHandler myHandler = new MyHandler();
myHandler.sleep(50);
frame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
flag =! flag;
myHandler.sleep(50);
}
});
}
}
显示效果图就是三张图片一直在轮流的显示,当点击屏幕时,图片会停止显示当前图片。如下:
参考:http://simpleframework.net/blog/v/105754.html
整个android的布局和视图可以参考这篇博文点击打开链接。写的非常全!