- 浏览: 235104 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (101)
- Practice (17)
- Model (15)
- Prototype (2)
- Integration (6)
- GWT (3)
- Android (16)
- Lab (6)
- Ubuntu (4)
- Data Structure(D,S) (1)
- 社会观察员 (1)
- python (14)
- redis (0)
- mysql (9)
- php (0)
- Data Structure(D (1)
- haproxy (2)
- Shell (5)
- Zabbix (1)
- CentOS (1)
- sqlplus (1)
- rlwrap (1)
- Oracle (2)
- schema (2)
- user (1)
- accredit (1)
- Delphi (2)
- nagios (1)
- nginx (0)
最新评论
-
白云飞:
兄弟能不能发一份完整的源码到我邮箱?luochengwei20 ...
【Python真的很强大】程序Log实时监控 -
myreligion:
nice job!
解决一个棘手的bug: java.lang.NoClassDefFoundError: android.os.AsyncTask -
yw9002:
你这个貌似提交的时候整个页面都会刷新。
AjaxAnyWhere+Struts的一个应用(demo/feature crew) -
fkpwolf:
这总结偏向于细节了,流水账
Android app项目和开发总结 -
crazybull:
期待详细总结~~~
Android app项目和开发总结
这是一篇"在比萨斜塔上模拟两个铁球同时落地",如下:
代码如下:
已打包,有兴趣的看看.
代码如下:
package com.chaoqun; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.Bitmap.Config; import android.graphics.Paint.FontMetrics; import android.graphics.PorterDuff.Mode; import android.os.Bundle; import android.os.Handler; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class TwoBalls extends Activity { /** Called when the activity is first created. */ protected WindowManager.LayoutParams _windowParams; protected WindowManager _windowManager; protected static Display _display; protected ImageView _icon01; protected ImageView _icon02; private Handler _messageHandler; private Button _go; @Override protected void onDestroy() { //清除手工添加的View if(_icon01 != null && _windowManager != null) { _windowManager.removeViewImmediate(_icon01); _icon01 = null; } if(_icon02 != null && _windowManager != null) { _windowManager.removeViewImmediate(_icon02); _icon02 = null; } super.onDestroy(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); _go =(Button)findViewById(R.id.options_btn); _display = ((WindowManager)this.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); //获取屏幕介质信息 _messageHandler = new Handler(); _go.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { startAnim(genBitMapforAnim("02", 40), _display.getWidth()-100 , 2, (30-40)/2); startAnim(genBitMapforAnim("01", 30), _display.getWidth()-150, 1, 0); //这里先后有时间差,忽略了,另外UI Thread在消息处理也有时间差,忽略了。 //要精确模拟,只有自定义View,单独绘制了。 } }); } protected Bitmap genBitMapforAnim(String itemCode, int size) { String text = itemCode.length() >= 5 ? itemCode.substring(0, 5) : itemCode; Bitmap result = Bitmap.createBitmap(size*2,size*2, Config.ARGB_8888); Canvas canvas = new Canvas(result); canvas.drawARGB(0, 0xff, 0, 0); Paint paint = new Paint(); paint.setAntiAlias(true); //抗锯齿 paint.setFilterBitmap(true); //透明设置 paint.setColor(Color.RED); paint.setAlpha(200); canvas.drawCircle(size/2, size/2, size/2, paint);//绘制半径为size/2的圆 paint.setAlpha(255); paint.setTextSize(9); paint.setColor(Color.WHITE); float textWidth = paint.measureText(text); //取得字体宽度 FontMetrics fm = paint.getFontMetrics(); float textHeight = (float)(fm.descent + fm.ascent) / 2; //取得字体高度 canvas.drawText(text, (size-textWidth) /2.0f,(size-textHeight)/2.0f, paint); //编号 final Rect rect = new Rect(0, 0,size, size); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(result, rect, rect, paint); //生成透明位图 return result; } protected void startAnim(final Bitmap bitmap, final int startXLocation, int id, final int offset) { final int startY = 160; final ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); if(_windowParams == null) _windowParams = new WindowManager.LayoutParams(); _windowParams.gravity = Gravity.TOP | Gravity.LEFT; //标示要关注上下,左右位置 _windowParams.x = startXLocation; //起点坐标x _windowParams.y = startY + offset; //起点坐标y, 设置offset是为了保证起始位置在同一高度 _windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; _windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; _windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; _windowParams.format = PixelFormat.TRANSLUCENT; _windowParams.windowAnimations = 0; if(_windowManager == null) _windowManager = (WindowManager)TwoBalls.this.getSystemService("window"); //获取全局实例WindowManager ImageView icon = id == 1 ? _icon01 : _icon02; if(icon != null) { _windowManager.removeViewImmediate(icon); //移除先前的View icon = null; } else { icon = imageView; } _windowManager.addView(icon, _windowParams); //添加View到当前界面 final Runnable runnable = new Runnable() { double t = 0.0d; final double g = 2.0d; public void run() { t++; _windowParams.x = startXLocation; //由于WindowManager是单实例,所以这里要记录每个的x坐标 _windowParams.y = startY + offset + (int)(0.5 * g * t * t); //匀加速运动位置计算 _windowManager.updateViewLayout(imageView, _windowParams); //更新坐标 } }; new Thread() { long lastUpdate = System.currentTimeMillis(); public void run() { //设置大家都经过同一高度(这里依旧考虑到球的半径不同) while (_windowParams.y + offset < _display.getHeight() - 60 && !Thread.interrupted() && !TwoBalls.this.isFinishing()) { if(System.currentTimeMillis() - lastUpdate >= 100) { //每隔100ms动一下,移动一侦 lastUpdate = System.currentTimeMillis(); _messageHandler.post(runnable); } } if(!bitmap.isRecycled()) bitmap.recycle(); } }.start(); } }
已打包,有兴趣的看看.
发表评论
-
解决一个棘手的bug: java.lang.NoClassDefFoundError: android.os.AsyncTask
2012-04-03 15:58 8792这个Bug发生在这样的环境: 你有很多的 ... -
线程阻塞队列的处理
2012-02-16 21:38 1492在日常事务中,我们常常依次做如下操作: 排队取得一个单 ... -
为WebView加上复制文本功能
2012-02-06 22:23 12277需求描述: 长按WebView出现Context ... -
细数Android Bug
2012-01-26 16:12 2828咱们的三、四岁孩子:Android有些问题。现罗列一下 ... -
为Notification自定义铃声
2012-01-21 10:53 2697如下是为Notification自定义铃声的部分片段 ... -
WebView使用总结
2012-01-21 10:30 3541以下是使用WebView过程中的部分场景和解决 ... -
Drawable示例
2011-01-26 13:14 1395继上 ,完善几个Drawable示例. ... -
Android app项目和开发总结
2011-01-15 21:02 2110关键字 : android app, android ... -
Frame布局FrameLayout & Frame动画AnimationDrawable 应用实例
2010-12-20 23:05 18021)FrameLayout常常与 merge 相关,关于他 ... -
用代理模式处理海量高频数据更新
2010-11-28 23:40 1060业务背景: 海量高频数据(如股票实时报价), 更新的规则: 被 ... -
个性化(Style/Theme)之ListView
2010-10-15 16:09 28771)Item分隔栏 只需要在Adapter中Overrid ... -
用户友好体验之ListView分页
2010-10-14 16:17 1578先贴上操作画面。其中最后一个条目是下列三者中其一。 < ... -
退出App的解决方案
2010-10-14 14:13 2591页面(activity)太多,要完全退出app基本 ... -
让用户不再遭遇ANR
2010-07-01 12:27 1544ANR简介 Android有专门的Thread ... -
TableRow数据更新时加上高亮背景
2010-06-04 11:30 1953一般Table的数据(行)更新时,要配合一定的动画效果 ...
相关推荐
《两个铁球同时着地》这篇课文是人教版小学四年级下册第七单元的一篇重要教学内容,主要讲述了意大利科学家伽利略敢于挑战权威,通过反复试验验证科学真理的故事。该单元旨在培养学生的阅读交流能力和从故事中汲取...
《两个铁球同时落地》是一篇描绘著名科学家伽利略挑战权威、追求真理的故事。故事主要围绕伽利略对亚里士多德“重物先落地”观点的质疑及其通过实验验证这一理论的过程展开。 首先,我们要理解的是,这篇课文旨在...
《四年级语文上册 两个铁球同时着地》这篇课文是长春版教材中的一个教案,旨在通过讲述意大利科学家伽利略对亚里士多德观点的挑战,培养学生的科学精神和批判性思维。课文的核心内容是伽利略对权威的质疑以及他通过...
两个铁球同时着地.ppt
25两个铁球同时着地.ppt
《两个铁球同时着地》是一篇关于科学精神和实践检验真理的教学教案,主要讲述了17世纪意大利科学家伽利略如何挑战权威,通过实验证明亚里士多德的理论存在错误的故事。这篇教案旨在教育学生理解伽利略的科学精神,即...
《四年级语文上册 两个铁球同时着地》这篇课文讲述了17世纪意大利伟大的科学家伽利略如何挑战权威,勇于探索科学真理的故事。课文旨在让学生学习伽利略的科学精神,理解并体会课文中含义深刻的句子,以及掌握段落间...
这篇文档是针对小学四年级语文课程的一份教案,主题为“两个铁球同时落地”,源自鲁教版教材。教案详细规划了教学流程,旨在帮助学生理解并欣赏伽利略敢于挑战权威、勇于实践的科学精神,同时提升他们的阅读理解能力...
两个铁球同时着地课堂实录.pdf
《两个铁球同时着地》是一篇教学设计,旨在教授学生关于伽利略和他的著名实验。教学目标包括学习生字词、理解课文内容、掌握通过典型事例展现人物品质的写作技巧,以及学习伽利略的科学精神。课前,学生需要收集...
这篇四年级语文上册的《两个铁球同时着地》课文,主要讲述了伽利略勇于挑战权威、追求科学真理的故事。伽利略通过实验证明了亚里士多德关于物体下落速度与重量成正比的观点是错误的,他用实际行动展示了两个不同重量...
这篇PPT课件主要讲述了关于伽利略与“两个铁球同时着地”的科学故事,适合新课标小学语文教学使用。这个故事揭示了科学探索的重要性以及勇于挑战权威的科学精神。 伽利略是一位意大利物理学家和天文学家,他在17...
《两个铁球同时着地》是一篇关于科学精神和探索真理的故事,主要讲述了意大利物理学家、天文学家伽利略对亚里士多德提出的“重物体比轻物体下落速度要快些”这一理论产生疑问,并进行实验验证的过程。这篇教学设计...
这篇四年级语文上册的课程主要讲解了"两个铁球同时着地"的故事,这是基于历史上著名的物理实验,由意大利科学家伽利略所进行。伽利略是科学史上的一位重要人物,他的工作对现代科学有着深远的影响。在这个课件中,...
《25_两个铁球同时着地(完美版).ppt》是一个关于科学教育的课件,主要讲述了伽利略在比萨斜塔所做的著名实验,旨在教育学生理解科学真理的探索方法以及勇于挑战权威的精神。这个实验是伽利略对亚里士多德观点的质疑...
这篇文档是针对小学四年级语文课程的一份教案,主题为《两个铁球同时着地》,主要讲述了科学家伽利略挑战亚里士多德关于物体下落速度与重量有关的理论的故事,旨在教育孩子们不迷信权威,培养他们独立思考和求实的...
这篇小学语文的PPT教案以"两个铁球同时着地"为主题,讲述了意大利科学家伽利略挑战传统观念的故事。故事的核心知识点围绕伽利略对亚里士多德理论的质疑和实验证明展开,旨在教育孩子们敢于质疑权威,勇于探索真理。 ...
总结,此教案以四年级语文教材中的《两个铁球同时着地》为载体,不仅教授了语言知识,还渗透了科学知识和科学方法,培养了学生的科学素养和批判性思维,同时展现了伽利略勇于探索和挑战权威的科学家形象。
《两个铁球同时着地》第一课时课件.ppt