`

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. */
	@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();
	}

}
分享到:
评论

相关推荐

    Android开发教程之Android控件--千锋培训

    文档介绍了控件介绍,1、ZoomControls 的 Demo,2、Include的Demo,3、VideoView的Demo,4、WebView的Demo,5、RatingBar的Demo,6、Tab的Demo,7、Spinner的Demo,8、Chronometer的Demo,9、ScrollView的Demo

    ZoomControls 缩放

    一般应用开发过程中,会在屏幕的右下角有两个缩放控件(缩小和放大),这个控件就是ZoomControls 如何使用其实现放大缩小功能: 1:首先在布局文件中配置ZoomControls控件 &lt;ZoomControls android:id="@+id/...

    Android编程实现图片放大缩小功能ZoomControls控件用法实例

    主要介绍了Android编程实现图片放大缩小功能ZoomControls控件用法,结合具体实例形式分析了Android ZoomControls控件实现图片缩放的具体操作方法与相关注意事项,需要的朋友可以参考下

    智能家居系统 缩放控件ZoomControls.doc

    智能家居系统 缩放控件ZoomControls.doc 学习资料 复习资料 教学资源

    移动互联网-缩放控件ZoomControls.ppt

    移动互联网应用

    ZoomControls放大与缩小

    ZoomControls控件是一个可以缩放的控件,以下是它但一些主要但方法 hasFocus ():判断焦点 hide ():隐藏 onTouchEvent (MotionEvent event):现这个方法来处理触摸屏移动事件 setIsZoomInEnabled (boolean is...

    Android 将 android view 的位置设为右下角的解决方法

    默认情况下,我们在eclipse中拖动控件到editor中,控件的位置将位于整个屏幕的左上角。可以使用 android:layout_gravity、android:gravity和android:width三个属性值,实现控件的九宫格定位。  Xml代码 代码如下:...

    指尖疯Android4.4视频第5集:图像类系列组件

    4. ZoomControls控件。 ImageView/ImageButton控件属于非常简单的控件,我们就从这两个入手开始。剩余的控件和手机等移动设备关系比较紧密,我们随后看看基于移动设备有什么新特性的控件。本集的口号是“我的面子我...

    Android Google Maps网络地图程序源代码

    部分源代码:   MyMap = (MapView) findViewById(R.... mZoom = (ZoomControls) MyMap.getZoomControls(); linearlayout = (LinearLayout) findViewById(R.id.zoomview); linearlayout.addView(mZoom);    

Global site tag (gtag.js) - Google Analytics