开始的时候好奇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; } } }
最后再看一看点击那个左上角的小按钮出现的布局界面吧:
好了,大家看得懂不。希望大家踊跃回馈!谢谢!
原文:http://www.cnblogs.com/Catherine-Brain/p/3552838.html