package irdc.ex07_03;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class EX07_03 extends Activity
{
private TextView mTextView01;
private ImageView mImageView01;
/* LayoutInflater对象作为新建AlertDialog之用 */
private LayoutInflater mInflater01;
/* 输入解锁的View */
private View mView01;
private EditText mEditText01,mEditText02;
/* menu选项identifier,用以标识事件 */
static final private int MENU_ABOUT = Menu.FIRST;
static final private int MENU_EXIT = Menu.FIRST+1;
private Handler mHandler01 = new Handler();
private Handler mHandler02 = new Handler();
private Handler mHandler03 = new Handler();
private Handler mHandler04 = new Handler();
/* 控制User静止与?的Counter */
private int intCounter1, intCounter2;
/* 控制FadeIn与Fade Out的Counter */
private int intCounter3, intCounter4;
/* 控制循序替换背景图ID的Counter */
private int intDrawable=0;
/* 上一次User有操作的Time Stamp */
private Date lastUpdateTime;
/* 计算User共几秒没有操作 */
private long timePeriod;
/* 静止超过n秒将自动进入屏幕保护 */
private float fHoldStillSecond = (float) 5;
private boolean bIfRunScreenSaver;
private boolean bFadeFlagOut, bFadeFlagIn = false;
private long intervalScreenSaver = 1000;
private long intervalKeypadeSaver = 1000;
private long intervalFade = 100;
private int screenWidth, screenHeight;
/* 每n秒置换图片 */
private int intSecondsToChange = 5;
/* 设定Screen Saver需要用到的背景图 */
private static int[] screenDrawable = new int[]
{
R.drawable.screen1,
R.drawable.screen2,
R.drawable.screen3,
R.drawable.screen4,
R.drawable.screen5
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* 必须?setContentView之前调用回屏幕显示 */
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags
(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
);
setContentView(R.layout.main);
/* onCreate all Widget */
mTextView01 = (TextView)findViewById(R.id.myTextView1);
mImageView01 = (ImageView)findViewById(R.id.myImageView1);
mEditText01 = (EditText)findViewById(R.id.myEditText1);
/* 初始取得User触碰手机的时间 */
lastUpdateTime = new Date(System.currentTimeMillis());
/* 初始化Layout上的Widget?见性 */
recoverOriginalLayout();
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// TODO Auto-generated method stub
/* menu群组ID */
int idGroup1 = 0;
/* The order position of the item */
int orderMenuItem1 = Menu.NONE;
int orderMenuItem2 = Menu.NONE+1;
/* 建立具有SubMenu的menu */
menu.add(idGroup1, MENU_ABOUT, orderMenuItem1, R.string.app_about);
/* 建立离开 */
menu.add(idGroup1, MENU_EXIT, orderMenuItem2, R.string.str_exit);
menu.setGroupCheckable(idGroup1, true, true);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// TODO Auto-generated method stub
switch(item.getItemId())
{
case (MENU_ABOUT):
new AlertDialog.Builder
(
EX07_03.this
).setTitle(R.string.app_about).setIcon
(
R.drawable.hippo
).setMessage
(
R.string.app_about_msg
).setPositiveButton(R.string.str_ok,
new DialogInterface.OnClickListener()
{
public void onClick
(DialogInterface dialoginterface, int i)
{
}
}).show();
break;
case (MENU_EXIT):
/* 离开程序 */
finish();
break;
}
return super.onOptionsItemSelected(item);
}
/* 监控User没有操作的线程 */
private Runnable mTasks01 = new Runnable()
{
public void run()
{
intCounter1++;
Date timeNow = new Date(System.currentTimeMillis());
/* 计算User静止不动的时间间距 */
timePeriod = (long)timeNow.getTime() - (long)lastUpdateTime.getTime();
float timePeriodSecond = ((float)timePeriod/1000);
/* 如果超过时间静止不动 */
if(timePeriodSecond>fHoldStillSecond)
{
/* 静止超过时间第几次的标记 */
if(bIfRunScreenSaver==false)
{
/* 启动线程2 */
mHandler02.postDelayed(mTasks02, intervalScreenSaver);
/* Fade Out*/
if(intCounter1%(intSecondsToChange)==0)
{
bFadeFlagOut=true;
mHandler03.postDelayed(mTasks03, intervalFade);
}
else
{
/* 在Fade Out后立即Fade In */
if(bFadeFlagOut==true)
{
bFadeFlagIn=true;
mHandler04.postDelayed(mTasks04, intervalFade);
}
else
{
bFadeFlagIn=false;
intCounter4 = 0;
mHandler04.removeCallbacks(mTasks04);
}
intCounter3 = 0;
bFadeFlagOut = false;
}
bIfRunScreenSaver = true;
}
else
{
/* screen saver 正在运行中 */
/* Fade Out*/
if(intCounter1%(intSecondsToChange)==0)
{
bFadeFlagOut=true;
mHandler03.postDelayed(mTasks03, intervalFade);
}
else
{
/* 在Fade Out后立即Fade In */
if(bFadeFlagOut==true)
{
bFadeFlagIn=true;
mHandler04.postDelayed(mTasks04, intervalFade);
}
else
{
bFadeFlagIn=false;
intCounter4 = 0;
mHandler04.removeCallbacks(mTasks04);
}
intCounter3 = 0;
bFadeFlagOut=false;
}
}
}
else
{
/* 当User没有动的间距未超过时间 */
bIfRunScreenSaver = false;
/* 恢复原来的Layout Visible*/
recoverOriginalLayout();
}
/* 以LogCat监看User静止不动的时间间距 */
Log.i("HIPPO", "Counter1:"+Integer.toString(intCounter1)+"/"+Float.toString(timePeriodSecond));
/* 反复执行线程1 */
mHandler01.postDelayed(mTasks01, intervalKeypadeSaver);
}
};
/* Screen Saver Runnable */
private Runnable mTasks02 = new Runnable()
{
public void run()
{
if(bIfRunScreenSaver==true)
{
intCounter2++;
hideOriginalLayout();
showScreenSaver();
//Log.i("HIPPO", "Counter2:"+Integer.toString(intCounter2));
mHandler02.postDelayed(mTasks02, intervalScreenSaver);
}
else
{
mHandler02.removeCallbacks(mTasks02);
}
}
};
/* Fade Out特效Runnable */
private Runnable mTasks03 = new Runnable()
{
public void run()
{
if(bIfRunScreenSaver==true && bFadeFlagOut==true)
{
intCounter3++;
/* 设定ImageView的透明度渐暗下去 */
mImageView01.setAlpha(255-intCounter3*28);
Log.i("HIPPO", "Fade out:"+Integer.toString(intCounter3));
mHandler03.postDelayed(mTasks03, intervalFade);
}
else
{
mHandl
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
《Google Android SDK开发范例大全(第2版)》在上一版的基础上,以Android手机应用程序开发(采用AndroidSDK2.1)为主题,通过160多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。 全书共分10章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、使用Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合Android与Aoogle强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。 《Google Android SDK开发范例大全(第2版)》讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 更强大的手机服务×更先进的影音功能×更优化的G00gIe服务整合,更多不容错过的精彩范例。 《Google Android SDK开发范例大全(第2版)》范例继承Java优良传统,使用开放架构。弹性修改随心所欲。 易于阅读的架构设计,每个范例均搭配步骤及完成画面! 汲取专家开发经验,指引快速上手捷径。
资源推荐
资源详情
资源评论
收起资源包目录
android SDK 开发范例大全(第2版)3-2 (1937个子文件)
start.3gp 412KB
resources.ap_ 1.76MB
resources.ap_ 1.02MB
resources.ap_ 636KB
resources.ap_ 573KB
resources.ap_ 452KB
resources.ap_ 423KB
resources.ap_ 265KB
resources.ap_ 188KB
resources.ap_ 187KB
resources.ap_ 186KB
resources.ap_ 58KB
resources.ap_ 25KB
resources.ap_ 20KB
resources.ap_ 15KB
resources.ap_ 15KB
resources.ap_ 15KB
resources.ap_ 15KB
resources.ap_ 15KB
resources.ap_ 13KB
resources.ap_ 12KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 9KB
resources.ap_ 8KB
resources.ap_ 8KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 5KB
EX06_13.apk 1.77MB
EX07_03.apk 1.03MB
EX07_07.apk 643KB
EX07_19.apk 578KB
EX07_09.apk 457KB
EX07_17.apk 427KB
EX07_19_1.apk 271KB
EX07_01.apk 192KB
EX07_04.apk 192KB
EX07_05.apk 191KB
EX07_10.apk 64KB
EX07_08.apk 29KB
EX08_09.apk 26KB
EX08_15.apk 23KB
EX07_11.apk 22KB
EX08_08.apk 21KB
EX07_14.apk 20KB
EX06_19.apk 20KB
EX08_13.apk 19KB
EX06_10.apk 17KB
EX07_16_1.apk 17KB
EX08_18.apk 17KB
EX07_06.apk 17KB
EX07_16.apk 16KB
EX06_23.apk 16KB
EX08_22.apk 15KB
EX06_09.apk 15KB
共 1937 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- synthiaguo2012-07-10例子果然好多呀,遗憾的就是没有说明哦
kikpz
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功