- 浏览: 115315 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
这个实例主要是运用字体的只是,但是android自带就几种,虽然android有提供可以自己加载字体的功能,但我试了下,没发现成功的,所以我代码里面就没有弄了,就弄了自带的。明天再试试效果,发现书本的代码不怎么适合android,当字体变大时,会出现按两次才能换行的bug。已经修改了.
下面是效果图:
mainView的代码:
package com.wjh.demon_5; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class MainView extends SurfaceView implements Callback,Runnable{ Thread gameThread = null; boolean isGame = true; SurfaceHolder holder = null; Paint forePaint = null; Paint backPaint = null; int keyCode = -1; boolean isKeyDown = false; public int m_nWidth = 50; //显示宽度 public Typeface m_nTypeFace = null; //存储字体 public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); backPaint = new Paint(); backPaint.setColor(Color.BLACK); forePaint = new Paint(); forePaint.setTypeface(Typeface.DEFAULT_BOLD); forePaint.setTextSize(20); forePaint.setColor(Color.RED); } @Override public void run() { // TODO Auto-generated method stub while(isGame) { input(); logic(); doDraw(); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //开始游戏主线程 public void start() { if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } //停止游戏主线程 public void stop() { isGame = false; if(gameThread != null) { try { gameThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //输入判断 public void input() { if( keyCode == KeyEvent.KEYCODE_DPAD_UP && isKeyDown) { m_nWidth = m_nWidth +(int)forePaint.getTextSize(); isKeyDown = false; } //如果按下方向键的下键,则调整当前行的位置 else if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN && isKeyDown) { m_nWidth = m_nWidth - (int)forePaint.getTextSize(); isKeyDown = false; } } //逻辑判断 public void logic() { } public void doDraw() { Canvas c = null; try { c = holder.lockCanvas(); synchronized (holder) { paint(c); } }finally{ if(c != null) { holder.unlockCanvasAndPost(c); } } } //画图 public void paint(Canvas canvas) { //清贫 canvas.drawRect(0, 0, getWidth(), getHeight(),backPaint); TextAjust.AjustDrawString(canvas,forePaint, "我要自动换行我要自动换行我要自动换行我要自动换行", m_nWidth, 50, 50, 30 ); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stop(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub //如果按下方向键的上键,则调整当前行的位置 this.keyCode = keyCode; isKeyDown = true; return true; } }
书上提供的换行功能源码,我把画图的改成android的,其他的没改,但代码效果不好
下面给出代码
TextAjust.java
package com.wjh.demon_5; import android.graphics.Canvas; import android.graphics.Paint; public class TextAjust { static public int ChangLine(String str, Paint paint, int linewd ) { int wd = 0; char ch; for (int i = 0; i < str.length(); i++) { ch = str.charAt(i); if (ch == '\n') return i + 1; wd += paint.getTextSize(); if (wd > linewd) return i; } return 0; } static public void AjustDrawString(Canvas canvas,Paint paint, String strText, int linewd, int x, int y, int yDis ) { String subStr; int nPos; //需要换行的位置 while (true) { //获得句子的断点位置 nPos = ChangLine(strText, paint, linewd ); if (nPos == 0) { //如果nPos为0,代表输入的字符串为空 canvas.drawText( strText, x, y,paint); break; } else { //判断是否最后一句 if (strText.charAt(nPos - 1) == '\n' ) subStr = strText.substring(0, nPos - 1); else subStr = strText.substring(0, nPos); canvas.drawText( subStr, x, y, paint); //截断句子,继续进行处理 strText = strText.substring(nPos, strText.length()); y = y + yDis; } } } }
apk文件(将后缀改为apk):Demon_5.zip
源代码文件:Demon_5.rar
评论
4 楼
dengminghua1016
2011-08-04
jkjkkjjkljk
hjjhjkkljklj
hjjhjkkljklj
3 楼
dengminghua1016
2011-08-04
2 楼
dengminghua1016
2011-08-04
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
1 楼
dengminghua1016
2011-08-04
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
不错,真的不错!!!
发表评论
-
android-单独开启闪光灯方法--适用于moto手机
2011-10-14 10:11 6951代码来自于http://code.google.com/p/s ... -
android线性布局布局的layout_weight
2011-10-08 16:23 1681对于LinearLayout的layout_weight属性, ... -
android-xml文件解析教程
2011-09-21 00:32 2106在讨论群里里面有人在问xml的解析方法,我就弄了个简单的d ... -
实例17--无敌抢钱鸡
2011-09-03 21:32 1053随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有 ... -
实例16--心理测试
2011-09-01 11:59 2090隔了两个月,又重新开 ... -
实例-15---猜数字
2011-06-23 23:48 1375经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以 ... -
实例14---不准+弱智的生物钟
2011-06-19 12:06 1172这个例子在java me主要是演示form的使用,在and ... -
实例13---点击速度测试机
2011-06-18 00:15 1072在原java me中通过这个例子是想要讲解RecordSt ... -
实例12--会动的地图
2011-06-16 23:00 1275前面已经出了一个展示地图的例子,这个例子主要运用了将地图的 ... -
实例11--播放按键声音
2011-06-13 11:35 7286实例11播放按键声音,在java me中有playTone ... -
实例10--不搭的跳舞机
2011-06-10 23:32 1753还是要重申一遍,因为只是转化,所以原j2me的问题,我不会 ... -
android的Sprite,TiledLayer,LayerManager
2011-06-08 10:42 3344因为android没有提供这些,而我要把j2me的一本游戏 ... -
实例9---我的地图
2011-06-08 10:18 1133实例9,在j2me中是使用了图层管理和地图图层,在andr ... -
实例8--《很幼稚的‘小’鸡快跑》
2011-06-04 22:08 1401实例8--《小鸡快跑》,原书用的是java me 提供的s ... -
实例7---android 版Sprite代码
2011-06-03 23:38 2997因为android 没有提供sp ... -
实例6--文字滚屏
2011-06-02 23:59 1112这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了 ... -
实例4---拼单词游戏
2011-06-01 00:02 1396这个第四个实例,我只是单纯的把j2me的代码换成andro ... -
实例3--使用surfaceView
2011-05-30 19:55 1371在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1171《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3607这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
"button自适应高度和自动换行"这个主题主要关注如何让按钮在不同屏幕尺寸和内容长度下保持良好的视觉效果。以下是对这个主题的详细解释: 一、自适应高度 1. CSS Flexbox:使用Flexbox布局模型可以轻松实现按钮的...
Android 自动翻页-文字自动换行的例子,测试自动换行,设置文字自动换行,得到字符串的信息,通过绘制TextUtil:实现自动换行,包括:行数、页数等信息,内部调用,本源码演示了文字自动换行的同时,还告诉初学者,...
51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组...
在Android开发中,"多个view自动换行"通常是指在一个布局容器中,当视图(View)数量过多,无法在一行内显示时,系统能够自动将它们换行展示,以适应不同的屏幕尺寸和布局需求。这涉及到对ViewGroup的管理和布局管理...
在这个类中,我们创建了一个`JTextArea`实例,并设置了其自动换行和根据单词边界换行的属性。然后,在`getTableCellRendererComponent`方法中,我们根据单元格的状态(是否被选中、是否有焦点)设置背景色和前景色,...
在这个场景中,我们关注的是一个名为"Android自动换行标签控件(二)"的主题,它涉及到如何利用`ViewGroup`来实现一个可以自动换行的标签控件。这样的控件通常用于展示多条分类标签,例如新闻类别或者产品属性,当...
5. **实例应用** - 应用商店的分类标签栏 - 新闻应用的标签导航 - 用户设置界面的切换选项 6. **注意事项** - 确保所有子视图的宽度都是wrap_content,以便`LineBreakLayout`能够正确计算换行。 - 如果标签...
本文将详细讲解如何创建一个名为`LinearLayoutAutoSwapRow`的自定义布局控件,它具备自动换行的功能,适用于展示一系列小图标或者文字,如应用列表、商品展示等场景。 首先,我们要明白`LinearLayout`是Android中的...
通过以上对CSS属性的详细解析及应用实例的介绍,我们可以看出,合理利用`table-layout`、`word-break`和`word-wrap`等CSS属性,能够有效改善表格内文本的显示效果,尤其是在需要处理大量文本数据的情况下,自动换行...
当我们需要在有限的屏幕空间内展示多行多列的数据,并且希望在内容增多时自动换行,这时就需要自定义一个LayoutManager来实现这一功能。本话题将详细介绍如何通过自定义RecyclerView的LayoutManager来实现自动换行的...
51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示51单片机Proteus仿真实例 K1-K4 键状态显示...
51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制LED移位51单片机Proteus仿真实例 K1-K4 控制...
然而,默认情况下,Flex的TabBar组件不会自动换行,而是将所有选项卡排列在同一行,如果选项卡数量过多,超出容器宽度,部分选项卡就会被裁剪,用户体验可能会受到影响。本篇文章将详细介绍如何在Flex中实现TabBar...
本文将深入探讨如何在`RichEdit`控件中实现自动换行以及关键字的高亮显示。 首先,我们要理解自动换行的概念。自动换行是指当用户在编辑框中输入文字时,如果一行已满,程序会自动将剩余的文字移到下一行。在`Rich...
要实现ListView中的文字编辑自动换行,我们需要结合EditText控件和自定义Adapter来完成这一功能。以下将详细阐述如何实现这一需求。 首先,我们创建一个布局文件,用于定义ListView中每一项的视图。在这个布局中,...
在某些场景下,我们希望文本能根据其内容自动换行,以适应不同的屏幕尺寸和布局需求。`UILabel` 的自动换行功能正是解决这一问题的关键。本教程将详细介绍如何实现 `UILabel` 的自动换行,并通过示例代码来展示具体...
全套消防验收资料实例填写-a火灾自动报警...doc
axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 axure-常用图标-实例 ...
在你的listviewtest项目中,你可以创建一个CMyListBox类的实例,然后按照上述方法进行自绘操作,这样你的Listbox就能显示不同高度的行并自动换行了。这个技术对于创建更灵活、更适应复杂数据的用户界面非常有用。
在iOS开发中,动态创建多个标签并实现自动换行是一项常见的需求,特别是在界面设计中需要展示多行可滚动的文字内容时。本Demo“ios-动态创建多个标签,自动换行”提供了一个很好的解决方案,让我们深入探讨一下这个...