一、缩放控制: 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. */
@Override
public 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 {
@Override
public void onClick(View v) {
ZoomControlsActivity.this.size = size + 2;
ZoomControlsActivity.this.text.setTextSize(size);
}
}
private class OnZoomOutClickListenerImpl implements OnClickListener {
@Override
public 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. */
@Override
public 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 {
@Override
public void onClick(View v) {
LayoutInflater inflater = LayoutInflater
.from(PopupWindowActivity.this);
PopupWindowActivity.this.popView = inflater.inflate(
R.layout.popwindow, null); // 找到了布局文件中的View
PopupWindowActivity.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() {
@Override
public void onClick(View v) {
PopupWindowActivity.this.popWin.dismiss(); // 不显示
}
});
PopupWindowActivity.this.popWin.showAtLocation(
PopupWindowActivity.this.popbut, Gravity.CENTER, 0, 0);
}
}
private class OnCheckedChangeListenerImpl implements
OnCheckedChangeListener {
@Override
public 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" /> <RadioGroup android:id="@+id/changestatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/online"> <RadioButton android:id="@+id/online" android:text="在线" /> <RadioButton android:id="@+id/offline" android:text="离线" /> <RadioButton android: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. */
@Override
public 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 {
@Override
public 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 {
@Override
public 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 {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(ExpandableListView02_Activity.this,
"打开分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT)
.show();
}
}
private class OnGroupCollapseListenerImpl implements
OnGroupCollapseListener {
@Override
public 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;
}
@Override
public Object getChild(int groupPosition, int childPosition) { // 取得指定的子选项
return this.children[groupPosition][childPosition];
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public int getChildrenCount(int groupPosition) {
return this.children[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return this.groups[groupPosition];
}
@Override
public int getGroupCount() {
return this.groups.length;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = this.buildTextView();
textView.setText(this.getGroup(groupPosition).toString());
return textView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public 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. */
@Override
public 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 {
@Override
public 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 {
@Override
public 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 {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(ExpandableListView03Activity.this,
"打开分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT)
.show();
}
}
private class OnGroupCollapseListenerImpl implements
OnGroupCollapseListener {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(ExpandableListView03Activity.this,
"关闭分组,groupPosition = " + groupPosition, Toast.LENGTH_SHORT)
.show();
}
}
@Override
public 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();
}
}