• 实现点击按钮,出现隐藏布局


           开始的时候好奇3d效果,然后就去看一下布局,所以,就哪一个布局文件里面的include嵌套布局开始研究了一番:

    结果还不错,做了一个可以试着点击按钮,然后出来一个隐藏的布局,然后,我又改进了一下,直接出现一个隐藏的布局

    里面有一个gridview,然后看一看,出了图片丑了一点,其余的就ok啦!

           这里只需要一个activity,就是一个java类。但是我建立了三个布局文件,其实两个就可以ok的,但是,为了大家能看懂,所以

    我就详细写了一下:

           先看看布局文件吧:

    这是一个开始界面的代码,看上去只有一个按钮:

    颜色丑了一点,请大家见谅一下哦!

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:background="#ff0" >
    
        <Button
            android:id="@+id/btn_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/mm_title_btn_menu_disable"
            android:onClick="onAction" />
    
        <RelativeLayout
            android:id="@+id/layout_visible"
            android:layout_width="300dip"
            android:layout_height="200dip"
            android:layout_marginRight="10dip"
            android:layout_marginTop="30dip" >
    
            <include layout="@layout/diy_menu" />
        </RelativeLayout>
    
    </LinearLayout>

    然后看一看include里面的那个布局文件吧:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/menu"
        android:layout_width="fill_parent"
        android:layout_height="200dip"
        android:background="#00000000"
        android:paddingBottom="2dip"
        android:layout_marginLeft="50dip"
        android:paddingTop="2dip"
        android:visibility="gone" >
    
        
        <GridView
            android:id="@+id/gridview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:numColumns="2"
            android:verticalSpacing="15dip" />
    
    </LinearLayout>

    这下,我们就把gridview弄到布局文件里面去了:

    然后再看一看布置gridview里面的内容:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <!-- 在这个布局文件里面,我们主要是设置adapter里面的布局 -->
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="2dip" />
    
        <TextView
            android:id="@+id/text_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="" />
    
    </LinearLayout>

    这下,我们就布局完全ok啦!

    在看一看activity里面的内容吧:

    package cn.android.app;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    public class VisiblityActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        
        }
    
        // 定义一个变量,然后来统计次数
        private int count;
    
        public void onAction(View v) {
            count++;
            LinearLayout menu = (LinearLayout) findViewById(R.id.menu);
            if (count % 2 == 0) {
                System.out.println("原来在点击了两次哦!");
                menu.setVisibility(View.GONE);
            } else {
                System.out.println("呵呵,我只是单击了单次!");
                menu.setVisibility(View.VISIBLE);
            }
            // 得到gridview的实例
            myGridView = (GridView)menu.findViewById(R.id.gridview);
    
            // 这里创建一个绑定适配器的方法
            bindAdapter();
        }
        private GridView myGridView;
        private void bindAdapter() {
            MyCarAdapter adapter = new MyCarAdapter();
            myGridView.setAdapter(adapter);
        }
    
        // 自定义一个adapter,可以灵活的来控制gridview子控件的布局显示
        // 这是一个内部类
        class MyCarAdapter extends BaseAdapter {
            // 图片的索引id
            int[] img = { R.drawable.emoji_000, R.drawable.emoji_001,
                    R.drawable.emoji_002, R.drawable.emoji_003 };
    
            // 再定义一个数组,然后与之对应
            String[] name = { "one", "two", "three", "four" };
    
            // 这里我们最好是重新写一下构造方法
            public MyCarAdapter() {
    
            }
    
            // 获取条目的数量
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return img.length;
            }
    
            // 返回子控件的内容
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return img[position];
            }
    
            // 获取子控件的id
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            // 重新加载view的方法
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                ImageView imageView = null;
                if (convertView == null) {
    
                    // 通过layoutinflater类加载布局,返回一个view的实例对象
                    convertView = LayoutInflater.from(VisiblityActivity.this)
                            .inflate(R.layout.main_view, null);
                }
                // 通过convertview调用findviewbyid方法根据其id返回相应的子控技
                imageView = (ImageView) convertView.findViewById(R.id.image);
                imageView.setImageResource(img[position]);
                TextView textview = (TextView) convertView
                        .findViewById(R.id.text_name);
                textview.setText(name[position]);
    
                return convertView;
            }
    
        }
    
    }

    最后再看一看点击那个左上角的小按钮出现的布局界面吧:

    好了,大家看得懂不。希望大家踊跃回馈!谢谢!

    一切只是为了充实自己!!stay hungry and stay foolish!!
  • 相关阅读:
    acm课程练习2--1005
    acm课程练习2--1003
    [ZJOI2010]网络扩容
    [ZJOI2009]狼和羊的故事
    [FJOI2007]轮状病毒
    [NOIP2016提高组]换教室
    [NOIP2016提高组]愤怒的小鸟
    [NOIP2009提高组]最优贸易
    [洛谷P2245]星际导航
    [NOIP2013提高组]货车运输
  • 原文地址:https://www.cnblogs.com/Catherine-Brain/p/3552838.html
Copyright © 2020-2023  润新知