package com.phicomm.hu.eagt;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGestureListener;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class EnumAndGestureTest extends Activity implements OnGestureListener
{
private GestureOverlayView mGestureOverlayView;
private Button mLeftButton, mRightButton;
private TextView mHeaderMsg;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//设置ActionBar标题
getActionBar().setTitle(R.string.draw_gesture);
//获取相关组件对象
mGestureOverlayView = (GestureOverlayView) findViewById(R.id.gesture);
mLeftButton = (Button)findViewById(R.id.left);
mRightButton = (Button)findViewById(R.id.right);
mHeaderMsg = (TextView)findViewById(R.id.header);
//注册手势相关监听器
mGestureOverlayView.addOnGestureListener(this);
//mGestureOverlayView.addOnGesturePerformedListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//程序创建时的绘制标题状态和按钮状态
setButtunStatus(Stage.Introduction);
monitorChange(Stage.Introduction);
}
// 定义左边按钮各状态的枚举,注:构造函数和成员变量的位置都要放在后面
private enum LeftButtonMode {
// 按钮显示为取消、可点击状态的枚举对象(枚举对象意味个人说法)
Cancel(R.string.cancel, true),
// 按钮显示为取消、不可点击状态
CancelDisabled(R.string.cancel, false),
// 按钮显示为重试、可点击状态
Retry(R.string.retry, true),
// 按钮显示为重试、不可点击状态
RetryDisabled(R.string.retry, false);
LeftButtonMode(int text, boolean enabled) {
this.text = text;
this.enabled = enabled;
}
final int text;
final boolean enabled;
}
// 定义右边按钮各状态的枚举
private enum RightButtonMode {
Continue(R.string.next, true),
ContinueDisabled(R.string.next, false),
Confirm(R.string.confirm, true),
ConfirmDisabled(R.string.confirm,false);
RightButtonMode(int text, boolean enabled) {
this.text = text;
this.enabled = enabled;
}
final int text;
final boolean enabled;
}
//统筹左右按钮状态的枚举,可以理解为枚举的复用(将左右按钮的状态枚举作为实参传递)
private enum Stage {
Introduction(R.string.gesture_introdution, LeftButtonMode.Cancel,
RightButtonMode.Confirm),
Ready(
R.string.gesture_ready, LeftButtonMode.CancelDisabled,
RightButtonMode.ConfirmDisabled),
Gesturing(
R.string.gesture_drawing, LeftButtonMode.RetryDisabled,
RightButtonMode.ContinueDisabled),
Finish(
R.string.gesture_finish, LeftButtonMode.Retry,
RightButtonMode.Continue);
Stage(int headerMessage, LeftButtonMode leftMode,
RightButtonMode rightMode) {
this.headerMessage = headerMessage;
this.leftMode = leftMode;
this.rightMode = rightMode;
}
final int headerMessage;
final LeftButtonMode leftMode;
final RightButtonMode rightMode;
}
//该方法的定义重点在于说明枚举类型能在switch语句中的活用(比如,我们可以根据传递的枚举进行监听操作某些事件)
private void monitorChange(Stage stage)
{
switch (stage) {
case Introduction:
Toast.makeText(this, "App onResume", Toast.LENGTH_SHORT).show();
break;
case Ready:
Toast.makeText(this, "onGestureStarted", Toast.LENGTH_SHORT).show();
break;
case Gesturing:
Toast.makeText(this, "onGesture", Toast.LENGTH_SHORT).show();
break;
case Finish:
Toast.makeText(this, "onGestureEnded", Toast.LENGTH_SHORT).show();
break;
}
}
//根据传进来的枚举Stage设置和显示按钮的状态
private void setButtunStatus(Stage stage)
{
mHeaderMsg.setText(stage.headerMessage);
mLeftButton.setText(stage.leftMode.text);
mLeftButton.setEnabled(stage.leftMode.enabled);
mRightButton.setText(stage.rightMode.text);
mRightButton.setEnabled(stage.rightMode.enabled);
}
// 正在画手势时调用该函数
@Override
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
//在画手势的过程中,更新按钮的状态
setButtunStatus(Stage.Gesturing);
monitorChange(Stage.Gesturing);
}
@Override
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
// 画完手势时调用
@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
//画完手势更新按钮状态
setButtunStatus(Stage.Finish);
monitorChange(Stage.Finish);
}
// 开始画手势时调用(即用户手指点住屏幕还没开始滑动时调用)
@Override
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
//准备画手势时更新按钮状态
setButtunStatus(Stage.Ready);
monitorChange(Stage.Ready);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
枚举类型应用小Demo
共28个文件
class:10个
png:6个
xml:3个
5星 · 超过95%的资源 需积分: 9 59 下载量 193 浏览量
2013-06-10
22:54:59
上传
评论
收藏 65KB ZIP 举报
温馨提示
枚举在android应用开发中的小列子,知识点有应用到手势的绘制监听函数
资源推荐
资源详情
资源评论
收起资源包目录
EnumAndGestureTest.zip (28个子文件)
EnumAndGestureTest
.project 854B
project.properties 361B
proguard.cfg 1KB
src
com
phicomm
hu
eagt
EnumAndGestureTest.java 5KB
AndroidManifest.xml 742B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 2KB
values
strings.xml 661B
assets
gen
com
phicomm
hu
eagt
R.java 1KB
.classpath 364B
bin
resources.ap_ 11KB
EnumAndGestureTest.apk 17KB
classes
com
phicomm
hu
eagt
R$layout.class 397B
R$drawable.class 410B
R$attr.class 343B
EnumAndGestureTest$Stage.class 2KB
R$id.class 475B
EnumAndGestureTest$LeftButtonMode.class 2KB
R.class 538B
R$string.class 712B
EnumAndGestureTest.class 4KB
EnumAndGestureTest$RightButtonMode.class 2KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
classes.dex 7KB
共 28 条
- 1
资源评论
- wenzhao1989032014-02-11可以,谢谢了
- 小小芳1532015-11-02不好意思我是来赚积分的
- king3320038842016-01-16不错 正好用到
- harveyhaha2015-05-19不错 正好用到
- czyhchenfei2014-06-13可以,谢谢了
stevenhu_223
- 粉丝: 573
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功