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<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" >
效果更逼真。嘻嘻。好了,打完收工!
在這里聲明了一個聲音池(用于點擊屏幕時,發出破碎的逼真效果),一個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中关于点击屏幕,实现破碎的效果的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android滤镜效果,Android图
- 下一篇: html上拉下拉查看文字内容,html5