PHP获取当前文件所在真实路径。 一句话:dirname(__FILE__); __FILE__返回的是该文件完整路径包括文件名,dirname则去掉后面的文件名,返回路径
ListView结合ContextMenu 获取点击项的Position
ContextMenu称为上下文菜单,一般在控件上长按时弹出。今天我们学习ContextMenu的用法,这里与listview相结合,先在ListView显示几个Item,然后在Item上长按,弹出一个菜单(就是ContextMenu),点击菜单上的项目,提示刚才长按的Item的Position. main.xml 里就一个ListView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
下面是Java代码:
package com.pocketdigi.com;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class main extends Activity {
/** Called when the activity is first created. */
ListView lv;
ArrayAdapter Adapter;
ArrayList arr=new ArrayList();
//定义菜单项
protected static final int Menu_Item1=Menu.FIRST;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv=(ListView)findViewById(R.id.lv);
//添加ListView项
arr.add("123");
arr.add("234");
arr.add("345");
Adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, arr);
lv.setAdapter(Adapter);
lv.setOnCreateContextMenuListener(MenuLis);
}
ListView.OnCreateContextMenuListener MenuLis=new ListView.OnCreateContextMenuListener(){
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
//添加菜单项
menu.add(Menu.NONE,Menu_Item1,0,"获取position");
}
};
//选中菜单Item后触发
public boolean onContextItemSelected(MenuItem item){
//关键代码在这里
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
//输出position
Toast.makeText(main.this,String.valueOf(menuInfo.position), Toast.LENGTH_LONG).show();
return super.onContextItemSelected(item);
}
}
解决Gallery载入大图片导致OutOfMemoryError内存溢出问题
在使用Gallery控件时,如果载入的图片过多,过大,就很容易出现OutOfMemoryError异常,就是内存溢出。这是因为Android默认分配的内存只有8M,而载入的图片如果是JPG之类的压缩格式,在内存中展开时就会占用大量的空间,也就容易内存溢出。这时可以用下面的方法解决:
ImageView i = new ImageView(mContext);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 10;
//貌似这个options的功能是返回缩略图,10即表示长和宽为原来的1/10,即面积为原来的1/100
//缩略图可以减少内存占用
Bitmap bm = BitmapFactory.decodeFile(lis.
get(position).toString(),options);
i.setImageBitmap(bm);
bm.recycle();
//资源回收
Android 捕获返回键,重写返回键功能
有时候我们的用户按返回键时并不是想要关闭Activity,比如说在文件管理器里,按返回键一般是希望返回到上层目录。我们可以通过捕获按键,再覆写的方法再修改按键功能。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
File f=new File(String.valueOf(cdir.getText()));
File fp=new File(f.getParent());
if(fp.canWrite()){
showdir(f.getParent());
}else{
Toast.makeText(Selectdir.this, "上级文件夹不可写", 1).show();
}
return false;
}
return false;
}
showdir是一个遍历目录的函数
CheckBox 加入ListView会导致OnItemClick不可用
在ListView里加入CheckBox,会导致无需点击listview的Item,只能点击CheckBox,原因是CheckBox的事件响应优先级高于List Item,所以屏蔽了ListItem的单击事件,如果需要使用OnItemClick,需要设置CheckBox的android:focusable=”false”
解决Eclipse显示目录不显示包的问题
出现这个问题是因为切换到了navigator视图,只要切换成package Explorer就OK
工行的国际E卡不能充值Google CheckOut(不能开通android market开发者帐号)
经过亲身试验,证实工行的国际E卡不能充值Google CheckOut。因为工行网上买入卖出美元至少要100美元,Googles要扣25美元的由帐号费用以及1美元的信用卡验证费,所以我买了126美元,充入国际E卡,经过多次实验及与95588客服沟通,始终无法支付成功,Googe提示信用卡拒绝支付。于是又把126美元换成了人民币,结果白白损失了10元人民币(汇率问题)。
Eclipse 的代码自动提示插件Aptana CSS代码提示
Eclipse本身有代码提示功能,但是并不是所有的文件都有提示,比如说CSS。之前在Windows平台编辑CSS,PHP一直都用Dreamweaver,之所以一直用这个臃肿的家伙,就是因为它那还算不错的代码提示功能。现在换到了Ubuntu,用DW是不可能了(在Windows下就卡,如果再来Wine一下的话,难以想像)。因为之前已经安装了Eclipse,PHP全都用Eclipse写,看到新建菜单上也有CSS文件,所以就试着用Eclipse写CSS。但是用了以后才发现,Eclipse编辑css没有代码提示功能,像我等新人,没有代码提示还怎么写(安装PDT后,php代码提示已经很好用了)。于是Google了一下,看看有没有什么插件能够实现。结果还真被我找到了,一个叫Aptana的插件,安装地址:http://download.aptana.com/tools/studio/plugin/install/studio(在线安装),在Install对话框中,注意去掉Group items by category 和 Contact all update sites during install to find required software 两项。装完了重新打开CSS文件,会默认使用Aptana的编辑器,这样就完美实现了代码提示功能,一点都不比Dreamweaver差。 之前用Windows的时候,只用Eclipse写Android,从来不知道Eclipse如此强大,其实在上大学时JAVA老师就推荐我们用Eclipse,但是我们当时因为太复杂以及语言的原因都放弃了,改用盗版的Jcreator。现在用Ubuntu,加上强大的Eclipse,基本上可以摆脱Windows了。目前还有线上支付和图片处理没有解决,GIMP貌似没有类似PS的动作功能。
Eclipse 代码提示背景黑色的解决
今天花了一天的时间,翻阅无数网站,总把把开发平台搬到ubuntu下。现在机器已经装好了php,mysql,nginx,Eclipse,android-sdk,Eclipse也装了ADT和PDT。现在Eclipse已经可以编译android源码在模拟器调试了,但是却发现,Eclipse的代码提示背景是黑色的,这样就看不到提示内容了。网上查了下,原来是跟ubuntu默认的主题有点冲突,修改一下就好了。 【解决方案】 为了解决这个问题,当然要改掉Ubuntu主题中Tooltip的背景色了。可以在下面的菜单中找到:
系统->首选项->外观->主题->自定义(是个按钮)->颜色(选项卡)->工具提示
新版的Ubuntu,换了unity界面,用上面的方法无效了,直接改主题相关文件。 默认主题是Ambiance,修改/usr/share/themes/Ambiance/gtk-2.0/gtkrc 把tooltip_fg_color和tooltip_bg_color改成自己喜欢的颜色就好了,我的是tooltip_fg_color:#000000,tooltip_bg_color:#e3c98c
Ubuntu 把最大化,最小化以及关闭按钮移回右侧
感觉ubuntu默认把他们放在左上角有点不习惯,在终端运行下面的命令可以换回来 gconftool-2 –set /apps/metacity/general/button_layout –type string “menu:minimize,maximize,close” 当然,你也可以自己定义一下顺序