昨天网上,跟哥们讨论起点击屏幕破碎的效果,今天索性就拿出时间整理一下,很简单奥,

基本思路:
1. 自定义一个View,用于展示这个破碎的的效果
2.在activity中加入这个view,通过setContentView(view);
3.注意要把activity的theme设置成 android:theme="@android:style/Theme.Translucent.NoTitleBar"  ,这样玩起来会更有效果。
首先重写一个view,我们就叫CustomeView吧。自己随便定义就好。
定义构造函数 如下:
public CustomView(Context context, AttributeSet attrs) {
super(context);
this.setKeepScreenOn(true);
this.setFocusable(true);
this.setLongClickable(true);
this.mSoundPool = new SoundPool(5, AudioManager.STREAM_SYSTEM, 5);
this.mSoundMap.put(1, mSoundPool.load(context, R.raw.cfokwowbfv, 1));
this.mBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.screen);
mXPointList = new ArrayList<Float>();
mYPointList = new ArrayList<Float>(); 
}
在这里声明了一个声音池(用于点击屏幕时,发出破碎的逼真效果),一个bitmap,用于显示屏幕破碎
在就是两个list分别是mXPointList 和mYPointList,用于保存点击时x和y的点。
接着,我们看一下OntouchEvent()
 @Override
 public boolean onTouchEvent(MotionEvent arg1) {
  // TODO Auto-generated method stub
  switch (arg1.getAction()) {
  case MotionEvent.ACTION_DOWN:
   playSound();//发声
   mXPointList.add(arg1.getX());
   mYPointList.add(arg1.getY());
   postInvalidate();//刷新界面
   mCount++;//点击的个数,其中,mLength是总个数
   if (mCount > mLength) {
    mXPointList.remove(0);
    mYPointList.remove(0);
    mLength++;
   }
   break;
  case MotionEvent.ACTION_UP:
   break;
  case MotionEvent.ACTION_MOVE:
   break;
  default:
   break;
  }
  return super.onTouchEvent(arg1);
 }
大家可以参照我写的注释,一看就明白
最后是onDraw()方法,此方法尤为重要。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < mXPointList.size(); ++i) {//点了多少次,就把破碎的图片显示多少次
canvas.drawBitmap(mBitmap, mXPointList.get(i) - mBitmap.getWidth()
/ 2, mYPointList.get(i) - mBitmap.getHeight() / 2, null);
}
}
然后在要引用的activity中的oncreate方法中进行如下设置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CustomView view = new CustomView(this, null);
setContentView(view);
}
另外,不要忘了在mainfest文件中加上
<activity
android:name=".ScreenCrashMainActivity"
     android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" >
效果更逼真。嘻嘻。好了,打完收工!

android中关于点击屏幕,实现破碎的效果的实现相关推荐

  1. android 碎屏功能,android中关于点击屏幕,实现破碎的效果的实现

    昨天网上,跟哥们讨论起点击屏幕破碎的效果,今天索性就拿出时间整理一下,很简单奥, 基本思路: 1. 自定义一个View,用于展示这个破碎的的效果 2.在activity中加入这个view,通过setC ...

  2. Android中RecyclerView点击item展开列表详细内容(超简单实现)

    请注明出处: http://blog.csdn.net/qq_23179075/article/details/79230457 Android中RecyclerView点击item展开列表详细内容( ...

  3. android tabhost 动画,Android中使用TabHost 与 Fragment 制作页面切换效果

    三个标签页置于顶端 效果图: 在文件BoardTabHost.java中定义页面切换的效果:切换页面时,当前页面滑出,目标页面滑入.这是2个不同的动画设定动画时要区分对待 import android ...

  4. Android 实现自动点击屏幕的方法

    //新建一个实体类 import android.app.Activity;import java.io.IOException;/*** Created by cxf on 2020/9/29* 自 ...

  5. Android中模拟点击软件的实现原理探究

    简介 按键触摸类模拟点击软件最早开始于PC时代,指的是可以通过设置.脚本控制等方式去实现模拟点击,解放双手,达到自动化操作的目的.在Android中,模拟点击对应的就是触发屏幕点击事件,多用于游戏中完 ...

  6. 在Android中区分点击和滑动操作

    最近在写一个图片浏览安卓应用,想要弄成全屏显示,只在单击时显示工具栏和状态栏,在触摸滑动时翻页.经过几个小时在互联网上的搜索也没找到合适的例子. 知道Android Studio的模板里有一个全屏的模 ...

  7. android 脚本模拟点击屏幕

    对低概率问题,需要多次测试以复现问题,使用脚本更容易实现,避免频繁人工操作 首先要了解手机的众多输入设备: 命令:adb shell cat /proc/bus/input/devices/ I: B ...

  8. 处理Android中的点击冲突

    我目前遇到的点击冲突发生的情况有三种: 1.ViewGroup中Item点击事件和子控件的冲突: 2.onTouch与onClick之间的冲突: 3.滑动与点击事件冲突. 下面开始分享解决办法: 情况 ...

  9. Android中Button点击事件

    在Android中的Button控件上,有三种鼠标点击事件,分别是鼠标点击事件,长按事件,触摸事件 接下来,看一下是如何进行的 方法一: 在layout中创建一个xml文件,使用什么布局方式,你都可以 ...

最新文章

  1. java空值转datetime,关于java1.8中LocalDateTime实现日期,字符串互转小坑。
  2. Spring Boot开启的2种方式
  3. 安卓百度离线人脸识别SDK集成
  4. CSR8675项目实战:BlueAg蓝牙一拖二发射器
  5. JAVA后台判断是否重复(编辑)
  6. SAM-BA AT91 USB to Serial converter驱动安装失败解决方法
  7. 欧姆字符的编码c语言,欧姆符号怎么打
  8. 懒人的法宝——办公自动化!
  9. 前端知识-vue-3、组件化开发
  10. ios App加载网页,点击网页链接调用App处理
  11. iOS 的 (签名验签)Code Signing 体系
  12. wex5 教程之 图文讲解 Cloudx5一键部署
  13. 区块链开发者观点:《Learn EOS》的作者 Christoph Michel
  14. QuartusII开发软件中的宏模块
  15. C++ Primer Plus(第六版)编程练习答案 第4章 复合类型
  16. SpringMVC-restful风格实现简单的页面增删改查
  17. 不适当的云安全 后果很严重
  18. 计算机SCI 源代码,计算机类SCI检索源刊
  19. 自学软件测试 - 功能测试篇
  20. Channel 通道

热门文章

  1. PHD considerations
  2. haproxy实现discuz论坛的动静分离和负载均衡
  3. IEnumerable 使用foreach 详解
  4. JAVA基础知识(2)--队列的操作
  5. ANDROID L——Material Design综合应用(Demo)
  6. Android开发入门教程--Android应用程序结构分析
  7. Linux下的文件共享全攻略系列之一:Samba服务器简介与快速配置指南
  8. eVC++就是eVC++啊
  9. N的阶乘末尾有多少个0
  10. SQLServer2008 Transact_SQL语言基础实例