SensorImageView随重力移动的ImageView

来源:互联网 发布:已备案域名 编辑:程序博客网 时间:2024/05/16 05:26

需要实现一个需求,实现类似于ios的随重力而移动的ImageView,要求较为简单:以宽度为基准,实现左右上下30dp范围内的随重力感应移动,图片高度如果小于控件高度,则上下不移动。
要实现这个功能,需要用到加速度传感器,实现思路为,在1-8的加速度范围(数值自己调节)内要让图片实现 0 至 图片宽度+60dp 的移动,高度同理

1.首先,要将自定义的ImageView的ScakeType强制设置为MATRIX。

@Override    public void setScaleType(ScaleType scaleType) {        super.setScaleType(ScaleType.MATRIX);//强制使用 MATRIX 模式    }

2.继承在setImageDrawable中,对drawable进行操作。

1)获取图片的真实宽高

imageWidth = drawable.getIntrinsicWidth();imageHeight = drawable.getIntrinsicHeight();

2)根据图片宽高,以及自己的需求,或得到缩放比例
,scaleX,scaleY。
3)对图片设置初始展示状态:
将图片默认居中显示

m.postScale(scaleX, scaleY);m.postTranslate(-DISTANCE, -distance_y - picDefaultMove);//居中显示

3.接下来,就要处理加速度传感器。
首先,应该在控件初始化的时候,对加速度感应器进行初始化,并添加监听,这里,我设置为100ms感应一次

if (null == sensorManager) {            sensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);        }        //若传感器类型为加速度传感器(重力感应器)        if (null == listener) {            listener = new SensorEventListener() {                @Override                public void onSensorChanged(SensorEvent event) {                    //若传感器类型为加速度传感器(重力感应器)                    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {                        //获取当前时刻的毫秒数                        curTime = System.currentTimeMillis();                        //100毫秒检测一次                        long during = curTime - lastTime;                        if (during > 100 && !isSetImg) {                            float x = event.values[SensorManager.DATA_X];                            float y = event.values[SensorManager.DATA_Y];                            translatImg(x, y);                            lastTime = System.currentTimeMillis();                        }                    }                }                @Override                public void onAccuracyChanged(Sensor sensor, int accuracy) {                }            };        }        defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

4.对加速度的数值进行相应的图片移动,这里有个比较重要的地方是,图片移动要用属性动画来实现,这样会比较平滑。这部分代码就不贴了,这个很大程度由产品需求决定。
下载链接是这么放么。。
http://download.csdn.net/detail/zhuldu/9697160

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 公司被收购期权怎么办 创业板连续亏损怎么办 国企合并后员工怎么办 资金密码忘记了怎么办? 大华电子秤称重不准怎么办 股票暂停上市散户怎么办 入股公司赔钱了怎么办 家里被虚报脱贫怎么办 技术入股想退股怎么办 想开店没有资金怎么办 想开店资金不够怎么办 要开店没资金怎么办 想开店缺少资金怎么办 刚刚开店没有资金怎么办 有专利没钱投资怎么办 肉牛养殖没资金怎么办 入股分红想撤资怎么办 入股后想退股怎么办 土地使用权到期后怎么办 员工辞职扣工资怎么办 公司老板要跑路不发工资怎么办 撤销撤多了怎么办 中葡股份跌停怎么办 厕所里有蟑螂怎么办 机票生日写错怎么办 户口出生地错了怎么办 护照号填写错误怎么办 鱼缸潜水泵声音大怎么办 股票跌到没钱了怎么办 新浪股票直播室打不开怎么办 st天业股份怎么办 日月股份破发怎么办 凌晨到达泰国机场怎么办 中介收钱不退钱怎么办 新车办行驶证怎么办 被云南信托扣款怎么办 贷款人不还款担保人怎么办 新三板摘牌股份怎么办 新三板摘牌股票怎么办 被st的股票怎么办 手机进水有雾气怎么办