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

       开始的时候好奇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!!
原文地址:https://www.cnblogs.com/Catherine-Brain/p/3552838.html