当前位置: 编程技术>移动开发
本页文章导读:
▪代码增添菜单 代码添加菜单
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
/**
* Class which shows how to handle menu item selection
*
.........
▪ 当String过长时亟需根据可显示的宽度来截取String 当String过长时需要根据可显示的宽度来截取String
当你开发的时候,也许你会遇到这样的一个问题:只有给你100px的宽度显示文件名字时,就必须考虑但文件名的长度超过100px时如何处理,.........
▪ 防止事件以致的oncreate的多次调用 防止事件导致的oncreate的多次调用
<activity android:name=".Main"
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
public void onConfigurationChanged(Configuration newConfig) {
.........
[1]代码增添菜单
来源: 互联网 发布时间: 2014-02-18
代码添加菜单
import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; /** * Class which shows how to handle menu item selection * * @author FaYnaSoft Labs */ public class Main extends Activity { private static final int OK_MENU_ITEM = Menu.FIRST; private static final int SAVE_MENU_ITEM = OK_MENU_ITEM + 1; private static final int BACK_MENU_ITEM = SAVE_MENU_ITEM + 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(0, OK_MENU_ITEM, 0, "Ok"); menu.add(0, SAVE_MENU_ITEM, 0, "Save"); menu.add(0, BACK_MENU_ITEM, 0, "Back"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case OK_MENU_ITEM: showMsg("Ok"); break; case SAVE_MENU_ITEM: showMsg("Save"); break; case BACK_MENU_ITEM: showMsg("Back"); break; } return super.onOptionsItemSelected(item); } private void showMsg(String msg) { Toast toast = Toast.makeText(Main.this, msg, Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, toast.getXOffset() / 2, toast.getYOffset() / 2); toast.show(); } }
[2] 当String过长时亟需根据可显示的宽度来截取String
来源: 互联网 发布时间: 2014-02-18
当String过长时需要根据可显示的宽度来截取String
当你开发的时候,也许你会遇到这样的一个问题:只有给你100px的宽度显示文件名字时,就必须考虑但文件名的长度超过100px时如何处理,也许会自己去计算100px可以显示多少个字母,但在android里显示的字符是不等宽的(也就说L要比l占更多的像素),并且当显示的不是语言不是English,而是汉语的字时,显然用这种方法是不可以满足的,我的朋友找到了一种简单的方法可以处理这样的问题:
原始方法:
改善方法:
当你开发的时候,也许你会遇到这样的一个问题:只有给你100px的宽度显示文件名字时,就必须考虑但文件名的长度超过100px时如何处理,也许会自己去计算100px可以显示多少个字母,但在android里显示的字符是不等宽的(也就说L要比l占更多的像素),并且当显示的不是语言不是English,而是汉语的字时,显然用这种方法是不可以满足的,我的朋友找到了一种简单的方法可以处理这样的问题:
原始方法:
String displayname = “abcedhkkjjll汉化”; if (displayname.length() > 15) { String temp = displayname.substring(0, 15) + "..."; canvas.drawText(temp, 0, temp.length(), xPos, yPos + h + 10, tPaint); } else { canvas.drawText(displayname, xPos, yPos + h + 10, tPaint); }
改善方法:
String displayname = “呵呵呵呵呵呵呵呵呵呵”; int count = tPaint.breakText(displayname, true, 100f, null); System.out.println(" ImageGallery breakText count=" + count); if (count < displayname.length()) { String temp = displayname.substring(0, count) + "..."; canvas.drawText(temp, xPos, yPos + h + 10, tPaint); } else { canvas.drawText(image.getDisplayName(), xPos, yPos + h + 12, tPaint); }
1 楼
hhww0101
2010-06-30
这样你还得根据Paint对象来判断
2 楼
hhww0101
2010-06-30
如果我要是在Widget中,没办法获取Paint对象怎么办?
[3] 防止事件以致的oncreate的多次调用
来源: 互联网 发布时间: 2014-02-18
防止事件导致的oncreate的多次调用
<activity android:name=".Main" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
现在笔者正在moto702上测试游戏demo,突然发现滑盖会导致当前Activity多次调用oncreate事件。由于游戏的surfaceview是这里初始化的,所以多次的调用一定会给游戏本身带来多次的初始化。怎么解决呢 在AndroidManifest.xml中修改如上xml的内容android:configChanges="orientation|keyboardHidden"并且在当前Activity中重载方法onConfigurationChanged,有需要的可以在方法中实现自己的功能。如:
/* * * if (this.getResources().getConfiguration().orientation == * Configuration.ORIENTATION_LANDSCAPE) { * * } * * else if (this.getResources().getConfiguration().orientation == * Configuration.ORIENTATION_PORTRAIT) { * * } */
好了 多次调用的问题就这样迎刃而解了~
最新技术文章: