- 浏览: 82068 次
- 性别:
- 来自: 北京
最新评论
-
sunsenzhen:
线程用过不释放吗?
android多线程开发 -
grandkingwang:
...
android 文件上传(模拟表单提交) -
fategaga:
这是多线程么?
android多线程开发 -
zymsuper:
xmpp 的连接方式是 长连接吗?如果是,那和你之前写的第三种 ...
android实现推送实践 -
hyee:
哥们,你那个存储过程是基于哪个数据库的,据我所知Oracle的 ...
连载三:模拟JavaEye论坛首页存储过程
锁屏 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 跨进程访问service方法
2012-11-12 19:31 22481.Intent 启动service Activity方法集合 ... -
查询应用使用次数
2012-11-13 22:43 1987http://www.eoeandroid.com/fo ... -
分析Http请求头获取爱帮公交数据
2012-10-20 20:43 2755爱帮公交公布了自己的openAPI,但是之前自己不知道,就通 ... -
android 文件上传(模拟表单提交)
2012-10-15 22:52 15349package irdc.ex08_11; imp ... -
ActivityGroup 与TabActivity
2012-09-29 15:47 2013首先定义一个主布局 ... -
framework新增native方法,aidl,新类,新模块
2012-09-18 16:30 5074如何向android的framework里添加新类 goog ... -
android开机启动流程说明
2012-09-12 14:08 1526第一步:启动linux 1.Bootloader ... -
android多线程开发
2012-08-31 12:22 74941.onResume()完全执行结束了(没有阻塞)的时候才会 ... -
FM 代码详解非原生
2012-09-21 23:40 3165FM点击关机按钮的时候: FMplay.java : ... -
Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档
2012-08-25 10:01 1686目 录 附录A 修改 ... -
adb问题汇总
2012-07-26 09:50 8148adb shell ps |grep "music| ... -
android Socket编程
2012-03-02 00:13 1151server: import java.net.*; ... -
android实现推送实践
2012-02-04 12:23 2143首先感谢 Android推送通 ... -
第一个iphone应用程序
2011-08-04 16:03 1113暑期实习已经 ... -
android http通信(二) 英译汉字典实例探究网络通信三种方法
2011-06-07 09:12 1466方法一:HttpURLConnection Stri ... -
android http通信(一) HttpURLConntection
2011-06-05 18:32 1191举例:从网络上下载图片 String urlpath=&qu ...
相关推荐
这需要在应用中设置一个错误计数器,并根据其值决定是否显示密码解锁界面。 - 图案复杂度:为了提高安全性,可以设置规则限制用户创建过于简单的图案,如最小连接点数或重复点的数量。 5. **源码分析**: - 在...
开发者可以通过设置背景颜色、线条颜色、节点颜色等属性,调整解锁界面的视觉效果。此外,还可以调整节点大小、线条宽度,甚至可以添加动画效果,增强用户体验。 5. **数据存储与安全** 手势解锁图案需要安全地...
第4章 “SpinLock”——画图与替代解锁界面的尝试 第5章 “BlueControl”——蓝牙通信与感应器服务 第6章 “快速启动”——动态小浮窗 第7章 “手机终端”——手机自动服务和语音控制 第8章 “Let's race”——网络...
第4章 “SpinLock”——画图与替代解锁界面的尝试 第5章 “BlueControl”——蓝牙通信与感应器服务 第6章 “快速启动”——动态小浮窗 第7章 “手机终端”——手机自动服务和语音控制 第8章 “Let's race”——...
第4章“SpinLock”——画图与替代解锁界面的尝试 第5章“BlueControl”——蓝牙通信与感应器服务 第6章“快速启动”——动态小浮窗 第7章“手机终端”——手机自动服务和语音控制 第8章“Let'srace”——网络通信与...
总的来说,自定义手势解锁控件涉及到了Android开发中的多个关键领域,包括图形绘制、触摸事件处理、数据库操作以及用户交互设计。开发者需要对这些方面有深入的理解才能有效地利用这个控件,为用户提供安全且便捷的...
在IT行业中,尤其是在移动设备开发或者物联网应用领域,传感器技术和数据可视化是两个非常重要的概念。...通过这样的练习,开发者可以深入理解Android系统如何与硬件交互,以及如何利用图形界面有效地呈现动态数据。
今天我们将深入探讨如何利用2D画图技术在Android平台上开发一款名为“美女找茬”的游戏。 首先,我们要理解2D画图在Android中的实现方式。Android提供了丰富的图形库,如Canvas和Bitmap,用于创建和绘制2D图形。...
超级AI大脑一个基于Spring Boot架构,支持web,Android,IOS,H5多端应用,使用了OpenAI的ChatGPT模型实现了智能聊天机器人。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时...
- **3.2.2 通过QuickConnect按钮主持会议**:此功能允许用户通过一个简单的界面快速启动会议。 **3.3 加入会议** - **3.3.1 通过链接或Web浏览器加入会议**:组织者可以通过电子邮件或其他方式分享会议链接,参与...