zoukankan      html  css  js  c++  java
  • Android笔记之动态改变layout中的布局

    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、

  • 相关阅读:
    海尔U+的启发:让用户对智能家居拥有“话语权”
    关于hash和ico的一些关联
    二维码简单介绍
    卡特兰数 大数模板
    C++ Linux 多线程之创建、管理线程
    Objective-c开发教程--MRC和ARC混编
    APP 打包測试流程 从零開始
    hdu4848 求到达每一个点总时间最短(sum[d[i]])。
    表结构变更后出现的ERROR OGG-01161 Bad column index (88)
    【Linux学习】Ubuntu下内核编译(一)
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3324972.html
Copyright © 2011-2022 走看看