当前位置: 编程技术>移动开发
本页文章导读:
▪代码增添菜单 代码添加菜单
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) {
*
* }
*/
好了 多次调用的问题就这样迎刃而解了~
最新技术文章: