• 【Android UI】侧滑栏的使用(HorizontalScrollView控件的使用)


    主要的用到的控件:HorizontalScrollView

    主要的功能:把几张图片解析成一张图片,在一个容器中呈现。

    布局文件xml

    side_bar_scollview.xml//显示view的容器

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <HorizontalScrollView
            android:id="@+id/MyScrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <LinearLayout
                android:id="@+id/ll_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal" >
            </LinearLayout>
            
        </HorizontalScrollView>
    
    </LinearLayout>

    home.xml//显示的主页面

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:background="@drawable/home_bg">
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="主页" />
    
    </LinearLayout>

    menu.xml//显示的菜单页面

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:background="@drawable/menu_bg">
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="菜单" />
    
    </FrameLayout>

    MainActivity.java//主活动

    package com.example.side_bar_scrollview;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewTreeObserver.OnGlobalLayoutListener;
    import android.widget.HorizontalScrollView;
    import android.widget.LinearLayout;
    
    
    public class MainActivity extends Activity {
    
        private HorizontalScrollView scrollview;
        private LinearLayout view_layout;
        private int width;
        private int height;
        private View home_view;
        private View menu_view;
        private float rate=0.4f;
        
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //关联界面ID
            setContentView(R.layout.side_bar_scollview);
            //关联控件ID
            scrollview=(HorizontalScrollView) findViewById(R.id.MyScrollView);
            view_layout=(LinearLayout) findViewById(R.id.ll_layout);
            //监听布局
            MyLayoutListener();
            //隐藏滚动条
            scrollview.setHorizontalScrollBarEnabled(false);
        }
    
        /**
         * 监听布局的变化
         *  1.getViewTreeObserver --- view事件的观察者
         *   2.addOnGlobalLayoutListener
         * 当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,
         * 所要调用的回调函数的接口类
         *
         */
            private void MyLayoutListener(){
            
            scrollview.getViewTreeObserver().addOnGlobalLayoutListener(
                    new OnGlobalLayoutListener() {
    
                @Override
                public void onGlobalLayout() {
                    // TODO Auto-generated method stub
                    //移除之前已经注册的全局布局的回调函数,使图片不会循环连在一起
                    view_layout.getViewTreeObserver()
                        .removeOnGlobalLayoutListener(this);
                    //获取最后一次调用measure()测量得到的scrollview的宽和高
                    height = scrollview.getMeasuredHeight();
                    width = scrollview.getMeasuredWidth();
                    //解析主页和菜单的布局
                    home_view=getLayoutInflater().inflate(R.layout.home,
                            null);
                    menu_view=getLayoutInflater().inflate(R.layout.menu,
                            null);
                    //添加view到view_layout
                    view_layout.addView(menu_view, (int)(width*rate), height);
                    view_layout.addView(home_view, width, height);
                    
                }
            });
            
        }
    
    }

    效果图:

  • 相关阅读:
    css:清除浮动
    js获得页面鼠标位置
    用jquery实现小火箭到页面顶部的效果
    PHP自动测试框架Top 10
    我的linux一万小时
    10个技巧优化PHP程序Laravel 5框架
    PHP开发中涉及到emoji表情的几种处理方法
    PHP编程效率的20个要点--PHP技术教程分享
    PHP中9大缓存技术总结
    【风马一族_xml】xml语法
  • 原文地址:https://www.cnblogs.com/lossingdawn/p/4466281.html
Copyright © 2020-2023  润新知