锁屏 Launcher 输入法 应用程序开发

ICS lockscreen :http://blog.chinaunix.net/uid-26153587-id-3202374.html

/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.ExpandableListActivity;import android.content.ContentResolver;import android.content.Context;import android.content.Intent;import android.content.res.Configuration;import android.content.res.Resources;import android.content.res.ColorStateList;import android.database.ContentObserver;import android.database.Cursor;import android.database.sqlite.SQLiteException;import android.telephony.PhoneStateListener;import android.telephony.ServiceState;import android.telephony.TelephonyManager;import android.text.format.DateFormat;import android.view.GestureDetector.OnGestureListener;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.*;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.graphics.Paint.Style;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.util.DisplayMetrics;import android.util.Log;import android.media.AudioManager;import android.os.BatteryManager;import android.os.Handler;import android.os.Message;import android.os.SystemClock;import java.util.Date;import java.io.File;/** * The screen within {@link LockPatternKeyguardView} that shows general * information about the device depending on its state, and how to get past it, * as applicable. */class LockScreen extends LinearLayout implements View.OnTouchListener,        OnGestureListener {    private String TAG = "yzy";    private float fingx;    private float fingy;        private float bigCircleX ;    private float bigCircleY ;    private float bigCircleR ;        public LockScreen(Context context, float widthPixels) {        super(context);        setWillNotDraw(false);                this.bigCircleX = widthPixels/2;        this.bigCircleY = 500;        this.bigCircleR = 200;        this.setOnTouchListener(this);    }    @Override    public void onDraw(Canvas canvas) {        super.onDraw(canvas);        Log.d("yzy", "ondraw.......");        // 创建画笔        Paint p = new Paint();        p.setColor(Color.RED);// 设置红色        p.setStyle(Style.STROKE);        p.setAntiAlias(true);// 设置画笔的锯齿效果。 true是去除,大家一看效果就明白了        canvas.drawCircle(fingx, fingy, 100, p);// 大圆                p.setColor(Color.WHITE);// 设置红色        canvas.drawCircle(bigCircleX, bigCircleY, bigCircleR, p);    }    public boolean dispatchTouchEvent(MotionEvent ev) {        // 这里必须返回 super.dispatchTouchEvent(ev); 滑动得时候才会多次触发ACTION_MOVE        return super.dispatchTouchEvent(ev);        // return true;        // return false;    }    public boolean onInterceptTouchEvent(MotionEvent ev) {        super.onTouchEvent(ev);        int action = ev.getAction();        switch (action) {            case MotionEvent.ACTION_MOVE:                //现在代码没有走这里 而是走得下面得onToucEvent                fingx = ev.getX();                fingy = ev.getY() < 500 ? 500 : ev.getY();                Log.d("yzy", "fingx =" + fingx);                Log.d("yzy", "fingy =" + fingy);                Log.d(TAG, "---onTouchEvent action:ACTION_MOVE");                break;            case MotionEvent.ACTION_DOWN:                Log.d(TAG, "---onTouchEvent action:ACTION_DOWN");                break;            case MotionEvent.ACTION_UP:                Log.d(TAG, "---onTouchEvent action:ACTION_UP");                break;            case MotionEvent.ACTION_CANCEL:                Log.d(TAG, "---onTouchEvent action:ACTION_CANCEL");                break;        }        return super.onInterceptTouchEvent(ev);    }    public boolean onTouchEvent(MotionEvent ev) {        super.onTouchEvent(ev);        int action = ev.getAction();        switch (action) {            case MotionEvent.ACTION_MOVE:                fingx = ev.getX();                fingy = ev.getY();                if(getDistance(this.fingx,this.fingy,this.bigCircleX,this.bigCircleY)<=this.bigCircleR){                    Log.d("yzy", "fingx =" + fingx);                    Log.d("yzy", "fingy =" + fingy);                    this.invalidate();                }                                               break;            case MotionEvent.ACTION_DOWN:                Log.d(TAG, "---onTouchEvent action:ACTION_DOWN");                break;            case MotionEvent.ACTION_UP:                float x = ev.getX();                float y = ev.getY();                if(isTriggered(x,y)){                                    }else{                    this.fingx = 240;this.fingy = 600;                    this.invalidate();                                    }                Log.d(TAG, "---onTouchEvent action:ACTION_UP");                break;            case MotionEvent.ACTION_CANCEL:                Log.d(TAG, "---onTouchEvent action:ACTION_CANCEL");                break;        }        return true;    }    private boolean isTriggered(float x, float y) {        // TODO Auto-generated method stub        return false;    }    private double getDistance(float fingx2, float fingy2, float bigCircleX2, float bigCircleY2) {        double  x = StrictMath.pow(fingx2-bigCircleX2, 2) + StrictMath.pow(fingy2-bigCircleY2, 2);        return StrictMath.pow(x, 0.5);    }    // --------------------------------------------------    @Override    public boolean onDown(MotionEvent e) {        // TODO Auto-generated method stub        return false;    }    @Override    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {        // TODO Auto-generated method stub        return false;    }    @Override    public void onLongPress(MotionEvent e) {        // TODO Auto-generated method stub    }    @Override    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {        // TODO Auto-generated method stub        // fingx = ev.getX();        // fingy = ev.getY();        //this.invalidate();        //Log.d(TAG, "---onTouchEvent action:ACTION_MOVE");        return true;    }    @Override    public void onShowPress(MotionEvent e) {        // TODO Auto-generated method stub    }    @Override    public boolean onSingleTapUp(MotionEvent e) {        // TODO Auto-generated method stub        return false;    }    // --------------------------------------------------    @Override    public boolean onTouch(View v, MotionEvent event) {        Log.d("yzy", "touch.........");        // TODO Auto-generated method stub        return false;    }}

更多相关文章

  1. Android DrawerLayout抽屉效果
  2. Android基于TextView属性android:ellipsize实现跑马灯效果的方法
  3. Android 滑动效果高级篇(七)—— 华丽翻页效果
  4. Android 各种实现Tab效果的实现方式
  5. Android TextView显示文字过长时添加阴影渐变消失效果
  6. Android控件阴影效果的几种实现方法
  7. Android TextView实现滚动跑马灯效果Marquee

随机推荐

  1. Android阿拉伯适配rtl
  2. 快速下载 Android(安卓)framework 源码
  3. mac 下 android studio 识别不出真机
  4. Android(安卓)popupWindow响应back按键并
  5. Android类似于滚动通知栏信息播报功能
  6. android触摸屏坐标手工校准/调整成功
  7. Android(安卓)Studio学习基础篇一
  8. android Studio中关于Gradle的使用注解
  9. Android(安卓)之布局(二)
  10. Android(安卓)app编译依赖android.jar配