OnCreateContextMenu也是创建菜单,但此菜单是通过点击其他控件创建的,而不是通过点"Menu"按钮创建的。另外OnCreateContextMenu创建菜单后会使后台失去焦点,而通过点击Menu按钮创建的菜单(调用onCreateOptionsMenu方法)不会使后台失去焦点。
代码:
代码:
package com.kevin.contextmenu;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.ImageView;
import android.widget.TextView;
public class Main extends Activity {
private static final int CONTEXT_ITEM1 = Menu.FIRST;
private static final int CONTEXT_ITEM2 = Menu.FIRST + 1;
private static final int CONTEXT_ITEM3 = Menu.FIRST + 2;
private TextView tv_title;
// 重写OnContextItemSelected来定义用户单击menu后的动作
@Override
public boolean onContextItemSelected(MenuItem item) {
// 创建Bitmap对象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kobe);
int height = bitmap.getHeight();
int width = bitmap.getWidth();
try{
switch (item.getItemId()) {
case CONTEXT_ITEM1:
tv_title.setText(getString(R.string.height) + String.valueOf(height));
break;
case CONTEXT_ITEM2:
tv_title.setText(getString(R.string.width) + String.valueOf(width));
break;
case CONTEXT_ITEM3:
tv_title.setText(getString(R.string.handw) + String.valueOf(height) + ", " + String.valueOf(width));
break;
default:
break;
}
}catch (Exception e) {
e.printStackTrace();
}
return super.onContextItemSelected(item);
}
private ImageView img;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv_title = (TextView) findViewById(R.id.tv_title);
img = (ImageView) findViewById(R.id.imageView1);
img.setImageDrawable(getResources().getDrawable(R.drawable.kobe));
// 设置OnCreateContextMenu来创建ContextMenu选项,
// 在ImageView上可以使用ContextMenu(长按住Imageview就会跳出来菜单)
// 它与onCreateOptionsMenu区别在于,它会使后台失去焦点
img.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, CONTEXT_ITEM1, 0, R.string.getheight);
menu.add(Menu.NONE, CONTEXT_ITEM2, 0, R.string.getwidth);
menu.add(Menu.NONE, CONTEXT_ITEM3, 0, R.string.getheightandwidth);
}
});
}
}