Android常用基础个人总结(二)

来源:互联网 发布:淘宝上守望先锋激活码 编辑:程序博客网 时间:2024/04/27 19:04

Android常用基础个人总结(二)

1.界面之间的切换动画(上一页和下一页)

        1.1 在res目录下新建anim文件夹        1.2 用xml文件描述动画        1.3 在Activity开始或结束后调用方法 overridePendingTransition(R.anim.anim_in, R.anim.anim_out);        1.3 示例:
<?xml version="1.0" encoding="utf-8"?>                    <translate xmlns:android="http://schemas.android.com/apk/res/android"                        android:duration="300"          //显示时长ms                        android:fromXDelta="100%p"      //x轴开始位置                        android:fromYDelta="0"          //y轴开始位置                        android:toXDelta="0"            //到x轴哪个位置                        android:toYDelta="0" >          //到y轴哪个位置(单位为像素)                    </translate>

2.手势识别操作

        2.1 得到手势识别器
GestureDetector mGestureDetector = new GestureDetector(this, new SimpleOnGestureListener());
        2.2 重写new SimpleOnGestureListener()里面的方法,按需求重写,onFling()滑动调用的方法        2.3 在Activity里重写onTouchEvent方法,在里面用手势识别器识别传入的手势
@Override                    public boolean onTouchEvent(MotionEvent event) {                        //让手势识别器识别传入的手势                        mGestureDetector.onTouchEvent(event);                           return super.onTouchEvent(event);                    }
        2.4 重写onFling()示例               
public boolean onFling(MotionEvent e1, MotionEvent e2,                                float velocityX, float velocityY) {                            // 当用户手指在屏幕上滑动的时候调用的方法                            // e1 手指第一次触摸到屏幕的事件                            // e2 手指离开屏幕一瞬间对应的事件                            // velocityX 水平方向的速度                            // velocityY 垂直方向的速度 单位像素/s                            if (Math.abs(velocityX)<200) {                                Log.i(TAG, "移动速度太慢,无效动作");                                return true;                            }                            if (e2.getRawY()-e1.getRawY()>50) {                                Log.i(TAG, "垂直移动过大,无效动作");                                return true;                            }                            if (e1.getRawX()-e2.getRawX()>200) {                                Log.i(TAG, "下一个界面");                                toNext();                                return true;                            }                            if (e2.getRawX()-e1.getRawX()>200) {                                Log.i(TAG, "上一个界面");                                toPrevious();                                return true;                            }                            return super.onFling(e1, e2, velocityX, velocityY);                        }                    });
        2.5其他方法补充            1.手指按下时触发
    public boolean onDown(MotionEvent e) {                    // TODO Auto-generated method stub                    return false;                    }
            2.手指抬起时触发,单击事件
public boolean onSingleTapUp(MotionEvent e) {                    // TODO Auto-generated method stub                    return false;                    }
            3.双击事件
@Override                    public boolean onDoubleTapEvent(MotionEvent e) {                    // TODO Auto-generated method stub                    return super.onDoubleTapEvent(e);                    }
            4.长按事件
public void onLongPress(MotionEvent e) {                    // TODO Auto-generated method stub                    }
            5.手指在屏幕上拖动事件,手指一直没有离开屏幕
    public boolean onScroll(MotionEvent e1, MotionEvent e2,                    float distanceX, float distanceY) {                    // TODO Auto-generated method stub                    return false;                    }
            6.滑动事件,当手指拖动之后抬起触发。手指在屏幕上滑动都会有一个速度,当手指离开的时候如果我们希望控件有惯性的继续滑动可以在此处实现
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,                    float velocityY) {                    // TODO Auto-generated method stub                    return false;                    }

3.重构代码,抽取基类

        3.1 设置向导界面每个界面都有上一页,下一页及滑动动画,手势识别的操作,可以将其向上抽取出一个基类继承Activity,让这四个界面继承这个基类        3.2 如果子类在相同的地方有不同的操作,将方法定义成抽象方法,类定义为抽象类,让子类去重写这些方法

4.获取sim卡串号

        4.1 得到电话管理
TelephoneManager  tm = getSystemService(TELEPHONY_SERVICE);
        4.2 获取sim卡串号
tm.getSimSerialNumber();

5.获取大量数据优化

        5.1 将获取数据的方法放在子线程里        5.2 显示获取进度条        5.3 获取数据后更新界面        5.4 隐藏进度条

6.子线程中更新UI

runOnUiThread(new Runnable(){                public void run(){                    }});
    7.开机广播接受者        7.1 写一个类继承Broadcast,重写Received方法         7.2 在清单文件中添加权限
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        7.3 在清单文件中配置Receiver节点,配置意图过滤器

8.发送短信

        1.添加权限
<uses-permission android:name="android.permission.SEND_SMS" />
        2.获得SmsManager
SmsManager smsManager = SmsManager.getDefault();
        3.调用sendTextMessage方法
smsManager.sendTextMessage(safenumber, null, "SOS...phone may lost", null, null);

9.播放音乐

MediaPlayer player = Mediaplayer.create(Context context,resource);                  player.strat();
0 0
原创粉丝点击