团购网站大缩水:5058家团购网站 只剩176家

团购导航网站“团800”日前发布《中国团购市场统计报告》,据统计,中国团购网站在今年上半年实际成交额为294.3亿元。今年6月的人工调研数据显示,团购网站存活数量缩减至176家,较2011年高峰期的5058家,当前的网站存活率仅为3.5%。
   以百度糯米、大众点评团、拉手网、美团、窝窝团为代表的“五强网站”,站位基本定局。提供特定细分服务领域团购产品的网站占到13.1%,如提供在线旅游团购预订服务的OTA网站——携程旅行网,以及由实体店开设的专门提供“婚纱摄影”团购服务的网站等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的TextureView手势移动、放大、缩小、旋转的代码示例: ```java public class TextureViewGestureActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { private TextureView mTextureView; private GestureDetector mGestureDetector; private Matrix mMatrix = new Matrix(); private float mScaleFactor = 1.0f; private float mRotationDegrees = 0.f; private float mFocusX = 0.f; private float mFocusY = 0.f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_textureview_gesture); mTextureView = findViewById(R.id.textureView); // 设置SurfaceTextureListener mTextureView.setSurfaceTextureListener(this); // 创建GestureDetector mGestureDetector = new GestureDetector(this, this); mGestureDetector.setOnDoubleTapListener(this); } // 实现SurfaceTextureListener接口 @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { // TODO: 初始化Camera并将其与TextureView绑定 } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { // TODO: 处理TextureView大小变化的事件 } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { // TODO: 释放Camera资源 return true; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { // TODO: 处理TextureView更新事件 } // 实现GestureDetector.OnGestureListener接口 @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO: 处理单击事件 return true; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // 处理拖动事件 // 计算拖动的距离 float dx = distanceX / mTextureView.getWidth() * 2; float dy = distanceY / mTextureView.getHeight() * 2; // 更新矩阵 mMatrix.postTranslate(-dx, -dy); mTextureView.setTransform(mMatrix); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO: 处理快速滑动事件 return true; } @Override public void onLongPress(MotionEvent e) { // TODO: 处理长按事件 } @Override public boolean onDoubleTap(MotionEvent e) { // TODO: 处理双击事件 return true; } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { // TODO: 处理单击事件 return true; } // 处理缩放和旋转手势 @Override public boolean onTouchEvent(MotionEvent event) { mGestureDetector.onTouchEvent(event); int action = event.getActionMasked(); if (action == MotionEvent.ACTION_DOWN) { // 记录焦点位置 mFocusX = event.getX(); mFocusY = event.getY(); } else if (action == MotionEvent.ACTION_MOVE) { // 计算缩放比例和旋转角度 float dx = event.getX() - mFocusX; float dy = event.getY() - mFocusY; float distance = (float) Math.sqrt(dx * dx + dy * dy); if (distance > 0) { // 处理缩放手势 float scaleFactor = (float) Math.exp(distance / mTextureView.getWidth()); mScaleFactor *= scaleFactor; mScaleFactor = Math.max(1.0f, Math.min(mScaleFactor, 4.0f)); mMatrix.setScale(mScaleFactor, mScaleFactor, mFocusX, mFocusY); // 处理旋转手势 mRotationDegrees = (float) Math.toDegrees(Math.atan2(dy, dx)); mMatrix.postRotate(mRotationDegrees, mFocusX, mFocusY); mTextureView.setTransform(mMatrix); } } return true; } } ``` 在这个示例中,我们使用TextureView显示相机预览,然后处理拖动、放大、缩小和旋转手势。在处理缩放手势时,我们使用一个变量mScaleFactor来记录当前缩放比例,并使用Matrix.setScale()方法来更新矩阵。在处理旋转手势时,我们使用一个变量mRotationDegrees来记录当前旋转角度,并使用Matrix.postRotate()方法来更新矩阵。最后,我们使用TextureView.setTransform()方法将矩阵应用到TextureView上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值