xdwangiflytek 发表于 2013-1-30 04:08:09

Android学习08-----Android中的基本控件(下)(7)_ZoomControls,PopupWindow,ExpandableListView

 
一、缩放控制:ZoomControls
Mian.xml
<?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" >    <TextView      android:id="@+id/text"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="你好"      android:textSize="10px" />    <ZoomControls      android:id="@+id/zommcontrols"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:gravity="bottom" /></LinearLayout>  
ZoomControlsActivity.java
package com.iflytek.demo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;import android.widget.ZoomControls;public class ZoomControlsActivity extends Activity {private ZoomControls zoomcontrols = null;private TextView text = null;private int size = 10; // 是保存文字大小/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.zoomcontrols = (ZoomControls) super.findViewById(R.id.zommcontrols);this.text = (TextView) super.findViewById(R.id.text);this.zoomcontrols.setOnZoomInClickListener(new OnZoomInClickListenerImpl());this.zoomcontrols.setOnZoomOutClickListener(new OnZoomOutClickListenerImpl());}private class OnZoomInClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {ZoomControlsActivity.this.size = size + 2;ZoomControlsActivity.this.text.setTextSize(size);}}private class OnZoomOutClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {ZoomControlsActivity.this.size = size - 2;ZoomControlsActivity.this.text.setTextSize(size);}}}  
二、弹出窗口:PopupWindow
PopupWindowActivity.java
package com.iflytek.demo;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.PopupWindow;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.TextView;public class PopupWindowActivity extends Activity {private Button popbut = null;private TextView statusinfo = null;private View popView = null;private PopupWindow popWin = null;private RadioGroup changestatus = null;private Button cancel = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.popbut = (Button) super.findViewById(R.id.popbut);this.statusinfo = (TextView) super.findViewById(R.id.statusinfo);this.popbut.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {LayoutInflater inflater = LayoutInflater.from(PopupWindowActivity.this);PopupWindowActivity.this.popView = inflater.inflate(R.layout.popwindow, null); // 找到了布局文件中的ViewPopupWindowActivity.this.popWin = new PopupWindow(PopupWindowActivity.this.popView, 300, 220, true);PopupWindowActivity.this.changestatus = (RadioGroup) PopupWindowActivity.this.popView.findViewById(R.id.changestatus); // 取得弹出界面中的组件PopupWindowActivity.this.cancel = (Button) PopupWindowActivity.this.popView.findViewById(R.id.cancel);PopupWindowActivity.this.changestatus.setOnCheckedChangeListener(new OnCheckedChangeListenerImpl());PopupWindowActivity.this.cancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {PopupWindowActivity.this.popWin.dismiss(); // 不显示}});PopupWindowActivity.this.popWin.showAtLocation(PopupWindowActivity.this.popbut, Gravity.CENTER, 0, 0);}}private class OnCheckedChangeListenerImpl implementsOnCheckedChangeListener {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {RadioButton but = (RadioButton) PopupWindowActivity.this.popView.findViewById(group.getCheckedRadioButtonId()); // 取得指定的单选钮被选中PopupWindowActivity.this.statusinfo.setText("当前用户状态:"+ but.getText().toString());PopupWindowActivity.this.popWin.dismiss();}}}  
Main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/statusinfo"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="当前用户状态:在线" /><Button android:id="@+id/popbut"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="状态" /></LinearLayout>  
popwindow.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/popinfo"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="请选择您的当前状态:"android:textSize="20px" /><RadioGroupandroid:id="@+id/changestatus"android:layout_width="wrap_content"android:layout_height="wrap_content" android:orientation="vertical"android:checkedButton="@+id/online"><RadioButtonandroid:id="@+id/online"android:text="在线" /><RadioButtonandroid:id="@+id/offline"android:text="离线" /><RadioButtonandroid:id="@+id/stealth"android:text="隐身" /></RadioGroup><Button android:id="@+id/cancel"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="取消"/></LinearLayout> 
三、树型组件:ExpandableListView
1、组项监听
ExpandableListView02_Activity.java
package com.iflytek.demo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.ExpandableListView.OnGroupClickListener;import android.widget.ExpandableListView.OnGroupCollapseListener;import android.widget.ExpandableListView.OnGroupExpandListener;import android.widget.Toast;public class ExpandableListView02_Activity extends Activity {private ExpandableListView elistview = null;private ExpandableListAdapter adapter = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.elistview = (ExpandableListView) super.findViewById(R.id.elistview);this.adapter = new MyExpandableListAdapter(this);this.elistview.setAdapter(this.adapter);this.elistview.setOnChildClickListener(new OnChildClickListenerImpl());this.elistview.setOnGroupClickListener(new OnGroupClickListenerImpl());this.elistview.setOnGroupExpandListener(new OnGroupExpandListenerImpl());this.elistview.setOnGroupCollapseListener(new OnGroupCollapseListenerImpl());}private class OnChildClickListenerImpl implements OnChildClickListener {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Toast.makeText(ExpandableListView02_Activity.this,"子选项被选中,groupPosition = " + groupPosition+ ",childPosition = " + childPosition,Toast.LENGTH_SHORT).show();return false;}}private class OnGroupClickListenerImpl implements OnGroupClickListener {@Overridepublic boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {Toast.makeText(ExpandableListView02_Activity.this,"分组被选中,groupPosition = " + groupPosition,Toast.LENGTH_SHORT).show();return false;}}private class OnGroupExpandListenerImpl implements OnGroupExpandListener {@Overridepublic void onGroupExpand(int groupPosition) {Toast.makeText(ExpandableListView02_Activity.this,"打开分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT).show();}}private class OnGroupCollapseListenerImpl implementsOnGroupCollapseListener {@Overridepublic void onGroupCollapse(int groupPosition) {Toast.makeText(ExpandableListView02_Activity.this,"关闭分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT).show();}}}  
MyExpandableListAdapter.java
package com.iflytek.demo;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;public class MyExpandableListAdapter extends BaseExpandableListAdapter {// 一个组下肯定会有多个子选项private String[] groups = new String[] { "我的好友", "家人", "同事", "黑名单" }; // 组名称private String[][] children = new String[][] { { "赵一", "吴二", "张三", "李四" },{ "父亲", "母亲" }, { "王五", "赵六", "王八" }, { "票贩子", "造假商" } }; // 这里面定义的子选项private Context context = null;public MyExpandableListAdapter(Context context) {this.context = context;}@Overridepublic Object getChild(int groupPosition, int childPosition) { // 取得指定的子选项return this.children;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}private TextView buildTextView() {AbsListView.LayoutParams params = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 55);TextView textView = new TextView(this.context);textView.setLayoutParams(params);textView.setTextSize(15.0f);textView.setGravity(Gravity.LEFT);textView.setPadding(70, 8, 3, 3);return textView;}@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {TextView textView = this.buildTextView();textView.setText(this.getChild(groupPosition, childPosition).toString());return textView;}@Overridepublic int getChildrenCount(int groupPosition) {return this.children.length;}@Overridepublic Object getGroup(int groupPosition) {return this.groups;}@Overridepublic int getGroupCount() {return this.groups.length;}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {TextView textView = this.buildTextView();textView.setText(this.getGroup(groupPosition).toString());return textView;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}}  
main.xml
<?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" >    <ExpandableListView      android:id="@+id/elistview"      android:layout_width="fill_parent"      android:layout_height="wrap_content" /></LinearLayout>  
3、上下文菜单
ExpandableListView03Activity.java
package com.iflytek.demo;import android.app.Activity;import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.View;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.ExpandableListView.OnGroupClickListener;import android.widget.ExpandableListView.OnGroupCollapseListener;import android.widget.ExpandableListView.OnGroupExpandListener;import android.widget.Toast;public class ExpandableListView03Activity extends Activity {private ExpandableListView elistview = null;private ExpandableListAdapter adapter = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.elistview = (ExpandableListView) super.findViewById(R.id.elistview);this.adapter = new MyExpandableListAdapter(this);this.elistview.setAdapter(this.adapter);super.registerForContextMenu(this.elistview);this.elistview.setOnChildClickListener(new OnChildClickListenerImpl());this.elistview.setOnGroupClickListener(new OnGroupClickListenerImpl());this.elistview.setOnGroupExpandListener(new OnGroupExpandListenerImpl());this.elistview.setOnGroupCollapseListener(new OnGroupCollapseListenerImpl());}private class OnChildClickListenerImpl implements OnChildClickListener {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Toast.makeText(ExpandableListView03Activity.this,"子选项被选中,groupPosition = " + groupPosition+ ",childPosition = " + childPosition,Toast.LENGTH_SHORT).show();return false;}}private class OnGroupClickListenerImpl implements OnGroupClickListener {@Overridepublic boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {Toast.makeText(ExpandableListView03Activity.this,"分组被选中,groupPosition = " + groupPosition,Toast.LENGTH_SHORT).show();return false;}}private class OnGroupExpandListenerImpl implements OnGroupExpandListener {@Overridepublic void onGroupExpand(int groupPosition) {Toast.makeText(ExpandableListView03Activity.this,"打开分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT).show();}}private class OnGroupCollapseListenerImpl implementsOnGroupCollapseListener {@Overridepublic void onGroupCollapse(int groupPosition) {Toast.makeText(ExpandableListView03Activity.this,"关闭分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT).show();}}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;int type = ExpandableListView.getPackedPositionType(info.packedPosition); // 取得菜单项int group = ExpandableListView.getPackedPositionGroup(info.packedPosition); // 取得所在组的索引int child = ExpandableListView.getPackedPositionChild(info.packedPosition); // 取得子菜单项的索引Toast.makeText(ExpandableListView03Activity.this,"type = " + type + ",group = " + group + ",child = " + child,Toast.LENGTH_SHORT).show();}}
页: [1]
查看完整版本: Android学习08-----Android中的基本控件(下)(7)_ZoomControls,PopupWindow,ExpandableListView