手势检测GestureDetector应用


package com.example.tyxiong.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ImageView;

/*
*
* Android的数据存储.前面用到PreferencesActivity存储参数设置...shared_文件.
*    少数据可用SharedPreferences File来存储;数据量大用SQL,当然手机不是服务器.
*
* SharedPreferences File SD卡 SQLiteDatabase
*
* SharedPreferences:文件存储位置在data/data/<>.share_.xml  key-value对
*  1 SharePreferences,负责读取其内数据3方法;
*  2 Editor,SharedPreferences内部接口,负责向其内写数据,4方法(putxxx()/clear()/remove()/commit())
*
*  使用步骤:4步
*   1SharedPreferences对象,Context方法getSharedPreferences(name,mode) 获取指定文件名 对象,3模式(private/../..)
*   2Editor对象, SharedPreferences对象 edit()方法.
*   3Editor对象 写数据.
*   4SharedPreferences读.
*

*File存储. java提供了完整的IO流体系.各种流.字节流/字符流/节点流/处理流/转换流/...
*
*         Context有2方法 openFileOutput()4模式(private/append/....)/openFileInput()---文件流.为两方法仅能打开该context应用程序文件夹文件..
*         Context有4方法访问该程序文件夹. 获取根下指定子目录/根下所有文件/删除根下指定文件/根绝对路径
*         使用步骤4:
*           1 Context的openFileOutput(指定模式4种)方法获得指定文件名对应文件的outStream(
*           2 可包装成打印流)写入数据. 写完关闭流.
*           3 Context的openFileInput()方法获得文件的输入流,
*           4 可包装成处理流(字符处理流)读行),读出数据,关闭流(顶端流.)
*
* 读写SD卡文件: SD卡扩展了手机的存储能力. 使用分为4步:
*   1 AndroidManifest.xml中添加权限MOUNT_UNMOUNT_FILESYSTEMS(加入删除文件); WRITE_EXTERNAL_STORAGE(写SD卡)
*   2 判断是否存在SD卡且有读写权限 Environment.getExternalStorageStage().equals(Environment.MEDIA_MOUNTED)
*   3 Environment.getExternalStorageDirectory();获得Sd卡目录,
*   4 获取指定文件流入/流出流进行数据操作...new FileOutputStream()  (无法用openFile...那只针对应用程序路径文件)
*   存取数据可以用RandomAccessFile...更方便.
*
*
* SQLite数据库.:轻量级数据库,底部只一个数据库文件.
*   SQLiteDatabase:代表数据库连接.其有4个静态方法用于获取指定文件对应的数据库连接对象.openOrCreate()
*   SQL语句分3类:
*       DDL(数据库定义语句) 4关键字 create(建表)/drop/alert/truncate
*       DML(数据库操作语句) 3关键字 insert(插入记录)/delete/update
*       查询语句           1   select
*
*   使用4步骤:
*       1 openOrCreate()获取指定文件数据库连接对象..
*       2 SQLiteDatabase对象6方法,execSQL():可以执行任何SQL语句(一般是DDL/DML因为没返回值嘛) rawQuery():执行SQL查询语句.
*           4个insert(3参数)/delete(3参数)/update(4参数)/query(参数太多用rawQuery()吧)
*       3 有查询语句要处理结果集Cursor(可移动记录指针6方法move/next/previous/first/last/),注意用simpleCursorAdapter包装Cursor时,用_id主键列名
*       4 关闭数据库连接. close()
*
*   SQLite3 :数据库操作工具,位于平台工具下, 将数据库文件导出到本地 sqlite3 ../fileXxx.db3启动数据库.
*
*   SQLite有5个数据类型,null,int,real(浮点),text文本,blob(大二进制)
*       可将任何类型数据存入到任何类型字段中.
*       建表时列名后的数据类型可省略.
*       例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数.
*
*   占位符 ?通配符 %多个字符 _单个字符
*
*   事务:4个方法 beginTransaction()/inTransaction()/setTransactionSuccessful()/endTransaction()
*   判断是否提交事务/回滚事务若调用了setTransactionSucessful()就提交.
*
*   SQLiteOpenHelper类,管理数据库的创建和更新.5个方法onCreate()/onUpdate()/getReadableDatabase()/getWriteableDatabase()/close()
*   onCreate()首次创建数据库时回调方法,方法里可建新表.
*   onUpdate()当数据库版本更新时回调
*   getReadableDatabase()读写方式打开文件对应数据库连接对象(SQLiteDatabase)
*   getWriteableDatabase()写方式.....
*   close()关闭所有数据库连接.
*
*   使用步骤3步:
*       1 继承SQLiteOpenHelper类,重写onCreate()方法(内建表),重写ouUpdate()方法
*       2 调用getReadableDatabase()获取数据库连接对象.
*       3 数据库对象执行SQL语句..
*       4 close()关闭数据库连接.
*  DDL create table <表名>(列名1 列类型 主键列/限定,列名2 类型...);
*  DML insert into table<表名>(列名,) values(值)  /value(值1,null,值2);
*  查询语句 select * from table<表名> where cause;
*
*
*手势Gesture 1连续的触摸屏点形成趋势,为它们提供了监听. 2形成形状,可添加为手势保存还可识别手势.
*   手势检测2步:
*       1 new GestureDetector()/需要传入OnGestureListener
*   监听器有(6方法2按下onDown()/onShowPress() /1拖动OnFling() /1滚动OnScroll()/1长按onLongPress()/1轻击(onSingleTapup()))
*       2 重写Activity的onTouchEvent()方法,将该Activity上的触摸事件交给GestureDetector处理
*
   * 增加手势: GestureLibrary手势库 GestureLibraries手势库工具类(从不同路径获取手势库) GestureOverlayView绘制手势组件
   * GestureLibrary有7方法,1addGesture()增加手势 2删除手势 2查询手势 1识别手势Recognise() 1保存手势save()
   * GestureLibraries4方法 从不同路径获取手势库.
   * GestureOverlayView 绘制手势的组件(xml中加组件全包名)3个监听器 开始绘制/正在绘制/完成绘制
   使用3步:
        1 GestureLibraries 通过fromFile..()方法获取手势库对象.
   *    2 为GestureOverLayView组件,添加绘制完成监听
   *    3 绘制完成,调用GestureLibrary的addGesture() save()添加手势并保存.
   *
   * 识别手势:手势库有方法recognise()
   *
   *
 自动朗读TTS(Text To Speech)
    使用4步:
        1 new TextToSpeech()对象,需要一个监听器参数(监听TextToSpeech对象初始化状态,实现ini方法,初始完对象回调)
        2 设置语言(不支持中文) setLanguage() 如Locale.UK
        3 speak()方法朗读 有模式新朗读/追加
        4 shutdown()关闭TextToSpeech


*
*
手势Gesture 1连续的触摸屏点形成趋势,为它们提供了监听. 2形成形状,可添加为手势保存还可识别手势.
*   手势检测2步:
*       1 new GestureDetector()/需要传入OnGestureListener
*   监听器有(6方法2按下onDown()/onShowPress() /1拖动OnFling() /1滚动OnScroll()/1长按onLongPress()/1轻击(onSingleTapup()))
*       2 重写Activity的onTouchEvent()方法,将该Activity上的触摸事件交给GestureDetector处理
*
* */

public class MainActivity extends Activity {

    GestureDetector gestureDetector;
    private ImageView imageView;
    int[] icons = new int[]{R.drawable.icon1, R.drawable.icon2, R.drawable.icon3, R.drawable.icon4};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imageView);
        gestureDetector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(MotionEvent e) {
                return false;
            }

            @Override
            public void onShowPress(MotionEvent e) {

            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {

                return false;
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                return false;
            }

            @Override
            public void onLongPress(MotionEvent e) {

            }

            int i = 0;

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                if (e1.getX() > e2.getX()) {
                    imageView.setImageResource(icons[Math.abs(i--) % icons.length]);
                } else {
                    imageView.setImageResource(icons[Math.abs(i++) % icons.length]);
                }
                return false;
            }
        });
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        gestureDetector.onTouchEvent(event);
        return true;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋葵好吃吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值