android 碎屏功能,android中关于点击屏幕,实现破碎的效果的实现
昨天网上,跟哥们讨论起点击屏幕破碎的效果,今天索性就拿出时间整理一下,很简单奥,
基本思路:
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();
mYPointList = new ArrayList();
}
在这里声明了一个声音池(用于点击屏幕时,发出破碎的逼真效果),一个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文件中加上
android:name=".ScreenCrashMainActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" >
效果更逼真。嘻嘻。好了,打完收工!
原文:http://blog.csdn.net/haorantiangang/article/details/43987965
android 碎屏功能,android中关于点击屏幕,实现破碎的效果的实现相关推荐
- android 碎屏功能,如何从碎屏的Android手机中恢复数据
现在是智能设备的时代,如Android手机,Windows手机,黑莓还是iPhone,虽然这些智能手机具有引人注目的功能,但它们需要小心处理,因为任何小的损坏都可能导致数据丢失.可能以各种形式对智能手 ...
- android 滑屏功能,Android 滑屏效果实现方式汇总
Android的滑屏,最近在研究这个东西,发现新浪微博的客户端.腾讯微博的客户端都有这个功能.目前到今天为止,腾讯和微博的客户端都是使用viewPager控件写的,可能重写了一些地方.而腾讯老版本的q ...
- Android分屏功能,适配及相关问题
Android Developers-开发-API指南-用户界面-多窗口支持: https://developer.android.google.cn/guide/topics/ui/multi-wi ...
- android 本地提醒功能,android中的本地定时推送到通知栏
一.使用系统定义的Notification 以下是使用示例代码: import android.app.Notification; import android.app.NotificationMan ...
- android截屏功能实现方式汇总【包括后台截屏】
前言 对于android实现截屏功能,简单讲述一下可行的方法和之间的利弊 使用canvas View v = getWindow().getDecorView(); Bitmap bitmap = B ...
- android 手机录屏功能,Android录屏功能的实现
最近做一个Android开发的项目用到了录屏的功能,开始查阅了一些资料和博客,基本上都是在讨论ROOT的.直到后来在github上看到一个比较新的代码,才恍然发现,Android 5.0时候开放了一个 ...
- Android 录屏功能的实现
最近开发中,要实现录屏功能,查阅相关资料,发现调用 MediaProjectionManager的api 实现录屏功能即可: import android.Manifest; import andro ...
- android录屏功能
思路 android实现录屏功能有两种方案,一种是直接使用android自带的MediaProjectionManager实现录屏功能,第二种是是只录语音,用户的操作通过某种方式进行记录保存,最后通过 ...
- 如何调用android录屏功能吗,Android录屏功能的实现
最近做一个Android开发的项目用到了录屏的功能,开始查阅了一些资料和博客,基本上都是在讨论ROOT的.直到后来在github上看到一个比较新的代码,才恍然发现,Android 5.0时候开放了一个 ...
最新文章
- r-route 命令 显示/配置ip路由表
- 六、继续学习Java的位运算符,发现真的简单
- Spring Boot配置@spring.profiles.active配置
- cvc 降噪_蓝牙耳机“底噪”、“主动降噪”和“CVC降噪”有什么不同
- 高效开发者是如何个性化VS Code插件与配置的?
- C语言之字符串探究(五):N系列字符串函数——strncpy、strncat、strncmp
- Windows下安装Redmine
- 微软拿 480 亿买 GitHub 就为了拥抱开源?
- python修改pip源脚本_修改python的pip源为国内源
- 2018年全国多校算法寒假训练营练习比赛(第一场)D. N阶汉诺塔变形(找规律)
- WinForm------如何修改PanelControl控件背景色
- Linux电源管理(五)thermal【转】
- Python期末大作业 —— 射靶
- 基于Lae的ffmpeg播放器
- 智慧金融系统软件需求规格说明(3.20终版)
- 袁萌:收到南京大学录取通知书的那一瞬间
- Inno Setup汉化方法
- 【05】2.1 程序语言特征
- 双11前夕,阿里启用机房巡检机器人、京东加了2000+台服务器!这下你们可以放心剁手了...
- CC2640R2F之central程序讲解(上)
热门文章
- 12月21日云栖精选夜读 | 推荐:一款分布式的对象存储服务
- DXT 图片压缩(DXTC/DirectX Texture Compression Overview)
- Proteus使用教程详细入门版(适用于 MCS-51等)
- 耶鲁大学公开课:博弈论第九节(笔记)
- c语言扩散,可扩散列--可扩散列头文件C语言
- dnf剑魂buff等级上限_DNF5.8新版buff换装提升整理以及装备选择,防止弯路
- 湖南云畅网络科技有限公司携手伙伴,共筑长三角数字经济产业新高地
- The Kouga Ninja Scrolls(2018沈阳现场E+切比雪夫距离+线段树维护最大次大最小次小)
- L1-064 估值一亿的AI核心代码(C++)
- AoA-ToF(信号到达角-飞行时间)联合估计详解