Android笔记之动态改变layout中的布局

时间:2021-06-13 08:58:51

1、动态显示和隐藏控件:

layout布局:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >

        <Button
            android:id="@+id/button1"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:visibility="gone"
            android:text="立即体验" />

    </RelativeLayout>

代码设置可见:

private Button open;

open=(Button)findViewById(R.id.button1);

open.setVisibility(View.VISIBLE);//设置可见

open.setVisibility(View.GONE);//不可见

 

2、移动图片(指示器图片):

XML布局:(根据布局文件,cursor是在最边上的)

 <ImageView
        android:id="@+id/cursor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="matrix"
        android:src="@drawable/a" />

代码实现imageview的移动:(设置图片的位置,以及执行动画)

private void InitImageView() {
        imageView = (ImageView) findViewById(R.id.cursor);
        bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a)
                .getWidth();//获取图片a的宽度
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int screenW = dm.widthPixels;//获取屏幕宽度
        offset = (screenW / 3 - bmpW) / 2;
        Matrix matrix = new Matrix();
        matrix.postTranslate(offset, 0);//平行变换
        imageView.setImageMatrix(matrix);//设置imageView的初始位置
    }
......

 Animation animation = new TranslateAnimation(startX, toX, startY, toY);
 animation.setFillAfter(true);//图片停留在动画结速位置
animation.setDuration(
300);//动画执行时间300us
imageView.startAnimation(animation);//imageView做动画移动

 

3、改变布局的方向:

 <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:id="@+id/linear1"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:textColor="@color/mycolor" />
    </LinearLayout>

代码改变布局:

private LinearLayout linearLayout;
...
linearLayout=(LinearLayout)findViewById(R.id.linear1);
                linearLayout.setOrientation(0);//0水平布局;1垂直布局

 

4、利用布局文件 / 图片 创建View

(1)布局文件:layout/tab_item_view.xml

<?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:gravity="center"
    android:orientation="vertical" >
<!-- ImageView和Textiew不必设置显示值,在代码中通过view设置 -->
    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:padding="3dp" >
    </ImageView>

    <TextView
        android:id="@+id/textview"       
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:textSize="10sp"
        android:textColor="#ffffff">
    </TextView>

</LinearLayout>

创建View,代码部分:

private LayoutInflater layoutInflater;

layoutInflater=LayoutInflater.from(this);

View view = layoutInflater.inflate(R.layout.tab_item_view, null);
   
  // 设置一个选项卡的图片资源(包括选中与未选中的不同图片)

       ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
        imageView.setImageResource(R.drawable.tab_home_btn);

        // 设置一个选项卡的文本
        TextView textView = (TextView) view.findViewById(R.id.textview);
        textView.setText("主页");

        return view;

 (2)图片文件创建View

private List<View> views = new ArrayList<View>();//Views列表,add(布局)
ImageView imaV;
imaV = new ImageView(this); imaV.setImageResource(R.id.dr1); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT); imaV.setLayoutParams(params); imaV.setScaleType(ScaleType.FIT_XY); views.add(imaV);

 

 

5、include加载布局:

在主布局文件中加入一个RelativeLayout,并在屏幕底部显示:

<include android:layout_alignParentBottom="true"
        android:id="@+id/inlude1"
android:layout_height="wrap_content" android:layout_width="wrap_content" layout="@layout/action_btns"/>

新建action_btns.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/list_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ffd9d9d9"
        android:orientation="horizontal">
    <ImageButton
        android:id="@+id/list_add"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_weight="1.0"
        android:src="@drawable/ic_menu_add" />
</RelativeLayout>

 

 6、布局属性LayoutParams:

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT);
ImageView imaV;
imaV.setLayoutParams(params);

 

7、