HelloKen的专栏

先上一张图,因为这个效果该叫什么我也不知道。

锁屏应用在解锁的时候,跟随手指的滑动,显示Launcher或者其他应用的内容,起初并未直接在Keyguard上直接修改,而是做了一个Demo,实现效果后再加入到Keyguard中的。

先来说说怎么实现这个Demo的,然后再来讲怎么应用到Keyguard中去。

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Random;

importandroid.content.Context;

importandroid.graphics.Bitmap;

importandroid.graphics.BitmapFactory;

importandroid.graphics.Canvas;

importandroid.graphics.Color;

importandroid.graphics.LinearGradient;

importandroid.graphics.Paint;

importandroid.graphics.PorterDuff;

importandroid.graphics.PorterDuffXfermode;

importandroid.graphics.RadialGradient;

importandroid.graphics.Shader;

importandroid.graphics.drawable.BitmapDrawable;

importandroid.graphics.drawable.Drawable;

importandroid.util.AttributeSet;

importandroid.util.Log;

importandroid.view.MotionEvent;

importandroid.widget.FrameLayout;

publicclassFrameViewextendsFrameLayout{

privatestaticfinalStringTAG="FrameView";

privatebooleanisMoving=false;

privateBitmapfrontBitmap=null;

privateDrawablemBackground=null;

privatePaintmPaint=null;

privatefloatradius;

privatefloatcenterX;

privatefloatcenterY;

privatefloatbubbleX;

privatefloatbubbleY;

privateCanvasmCanvas;

privateDrawablemUnLockDrawable;

privateList<Bubble>bubbles=newArrayList<Bubble>();

privateRandomrandom=newRandom();//生成随机数

privateintwidth,height;

publicFrameView(Contextcontext,AttributeSetattrs,

intdefStyleAttr){

super(context,attrs,defStyleAttr);

}

publicFrameView(Contextcontext){

super(context);

}

publicFrameView(Contextcontext,AttributeSetattrs){

super(context,attrs);

}

privatevoidinit(){

//frontBitmap=CreateBitmap(Color.GRAY,getWidth(),getHeight());

mBackground=getResources().getDrawable(R.drawable.keyguard_bg);

frontBitmap=BitmapFactory.decodeResource(getResources(),R.drawable.keyguard_bg);

//frontBitmap=Bitmap.createBitmap(frontBitmap,0,0,getWidth(),getHeight());

mUnLockDrawable=getResources().getDrawable(R.drawable.unlock_dewdrop);

mPaint=newPaint();

radius=100f;

mCanvas=newCanvas();

}

@Override

publicbooleanonTouchEvent(MotionEventevent){

floatax=event.getX();

floatay=event.getY();

intac=event.getAction();

switch(ac){

caseMotionEvent.ACTION_DOWN:

isMoving=false;

centerX=ax;

centerY=ay;

invalidate();

returntrue;

caseMotionEvent.ACTION_MOVE:

Log.d(TAG,"onTouchEvent————–ACTION_MOVE");

isMoving=true;

bubbleX=ax;

bubbleY=ay;

radius=(float)Math.sqrt((ax-centerX)*(ax-centerX)+(ay-centerY)*(ay-centerY));

invalidate();

returntrue;

caseMotionEvent.ACTION_UP:

isMoving=false;

bubbles.clear();

invalidate();

break;

}

returnsuper.onTouchEvent(event);

}

classBubbleThreadextendsThread{

@Override

publicvoidrun(){

while(true){

try{

Thread.sleep(random.nextInt(3)*300);

}catch(InterruptedExceptione){

e.printStackTrace();

}

Bubblebubble=newBubble();

intradius=random.nextInt(30);

while(radius==0){

radius=random.nextInt(30);

}

floatspeedY=random.nextFloat()*5;

while(speedY<1){

speedY=random.nextFloat()*5;

}

bubble.setRadius(radius);

bubble.setSpeedY(speedY);

bubble.setX(bubbleX);

bubble.setY(bubbleY);

floatspeedX=random.nextFloat()-0.5f;

while(speedX==0){

speedX=random.nextFloat()-0.5f;

}

bubble.setSpeedX(speedX*2);

bubbles.add(bubble);

}

}

}

@Override

protectedvoiddispatchDraw(Canvascanvas){

Log.d(TAG,"onTouchEvent————–dispatchDraw—->>>>>>>>>>");

生活中若没有朋友,就像生活中没有阳光一样

HelloKen的专栏

相关文章:

你感兴趣的文章:

标签云: