微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Android系统开发全攻略(二)

Android系统开发全攻略(二)

时间:06-08 来源:互联网 点击:

) findViewById(R.id.gridview);

container=(LinearLayout)findViewById(R.id.container);

panel=new Panel(this,gridview,200,LayoutParams.FILL_PARENT);

container.addView(panel);//加入Panel控件

//新建测试组件

TextView tvTest=new TextView(this);

tvTest.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

tvTest.setText(“测试组件,红字白底”);

tvTest.setTextColor(Color.RED);

tvTest.setBackgroundColor(Color.WHITE);

//加入到Panel里面

panel.fillPanelContainer(tvTest);

panel.setPanelClosedEvent(panelClosedEvent);

panel.setPanelOpenedEvent(panelOpenedEvent);

//往GridView填充测试数据

ArrayList《HashMap《String, Object》》 lstImageItem = new ArrayList《HashMap《String, Object》》();

for (int i = 0; i 《 100; i++) {

HashMap《String, Object》 map = new HashMap《String, Object》();

map.put(“ItemImage”, R.drawable.icon);

map.put(“ItemText”, “NO.” + String.valueOf(i));

lstImageItem.add(map);

}

SimpleAdapter saImageItems = new SimpleAdapter(this,

lstImageItem,

R.layout.item,

new String[] { “ItemImage”, “ItemText” },

new int[] { R.id.ItemImage, R.id.ItemText });

gridview.setAdapter(saImageItems);

gridview.setOnItemClickListener(new ItemClickListener());

}

PanelClosedEvent panelClosedEvent =new PanelClosedEvent(){

@Override

public void onPanelClosed(View panel) {

Log.e(“panelClosedEvent”,“panelClosedEvent”);

}

};

PanelOpenedEvent panelOpenedEvent =new PanelOpenedEvent(){

@Override

public void onPanelOpened(View panel) {

Log.e(“panelOpenedEvent”,“panelOpenedEvent”);

}

};

class ItemClickListener implements OnItemClickListener {

@Override

public void onItemClick(AdapterView《?》 arg0,View arg1, int arg2, long arg3) {

@SuppressWarnings(“unchecked”)

HashMap《String, Object》 item = (HashMap《String, Object》) arg0

.getItemAtPosition(arg2);

setTitle((String) item.get(“ItemText”));

}

}《/SPAN》

这次就在基础篇的基础上加入拖拉功能。拖拉功能基于GestureDetector,GestureDetector的基本使用方式不是本文介绍的重点,有兴趣的童鞋可以上网查询相关的教程。

本文的抽屉控件相对于基础篇的抽屉控件多了以下功能:

  1.支持手势拖拉

2.拖拉到一半时,可以自动展开或者收缩。

具体如下图:

  

本文的源码可以到这里下载:http://download.csdn.net/detail/hellogv/3642418

只贴出抽屉组件的源码,其他源文件与基础篇的一样:

[java] view plaincopyprint?

《SPAN style=“FONT-family:Comic Sans MS;FONT-size:18px;”》public class Panel extends LinearLayout implements GestureDetector.OnGestureListener{

public interface PanelClosedEvent {

void onPanelClosed(View panel);

}

public interface PanelOpenedEvent {

void onPanelOpened(View panel);

}

private final static int HANDLE_WIDTH=30;

private final static int MOVE_WIDTH=20;

private Button btnHandler;

private LinearLayout panelContainer;

private int mRightMargin=0;

private Context mContext;

private GestureDetector mGestureDetector;

private boolean mIsScrolling=false;

private float mScrollX;

private PanelClosedEvent panelClosedEvent=null;

private PanelOpenedEvent panelOpenedEvent=null;

public Panel(Context context,View otherView,int width,int height) {

super(context);

this.mContext=context;

//定义手势识别

mGestureDetector = new GestureDetector(mContext,this);

mGestureDetector.setIsLongpressEnabled(false);

//改变Panel附近组件的属性

LayoutParams otherLP=(LayoutParams) otherView.getLayoutParams();

otherLP.weight=1;

otherView.setLayoutParams(otherLP);

//设置Panel本身的属性

LayoutParams lp=new LayoutParams(width, height);

lp.rightMargin=-lp.width+H

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top