android画图-解锁界面
16lz
2021-01-23
锁屏 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; }}
更多相关文章
- Android DrawerLayout抽屉效果
- Android基于TextView属性android:ellipsize实现跑马灯效果的方法
- Android 滑动效果高级篇(七)—— 华丽翻页效果
- Android 各种实现Tab效果的实现方式
- Android TextView显示文字过长时添加阴影渐变消失效果
- Android控件阴影效果的几种实现方法
- Android TextView实现滚动跑马灯效果Marquee