当前位置:  编程技术>移动开发
本页文章导读:
    ▪调用相机和相册        调用照相机和相册 直接下代码看吧。。 public class testCarema extends Activity { /** Called when the activity is first created. */ private ImageView imageView; private OnClickListener imgViewListener; private Bitmap myBitmap; .........
    ▪ Xcode4 惯用快捷键        Xcode4 常用快捷键 基础篇    command + arrow up / down                        切换 当前文件头文件和实现文件    control + command + arrow left/right        切换历史上/下一个文件  .........
    ▪ 旋钮在Activity屏幕中拖动,定位       按钮在Activity屏幕中拖动,定位 private ImageView img1; private int screenWidth; private int screenHeight; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main).........

[1]调用相机和相册
    来源: 互联网  发布时间: 2014-02-18
调用照相机和相册
直接下代码看吧。。

public class testCarema extends Activity
{
	/** Called when the activity is first created. */
	private ImageView imageView;
	private OnClickListener imgViewListener;
	private Bitmap myBitmap;
	private byte[] mContent;

	@ Override
	public void onCreate ( Bundle savedInstanceState )
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		imageView = (ImageView) findViewById(R.id.imageView);
		imgViewListener = new OnClickListener()
		{
			public void onClick ( View v )
			{
				final CharSequence[] items =
				{ "相册", "拍照" };
				AlertDialog dlg = new AlertDialog.Builder(testCarema.this).setTitle("选择图片").setItems(items,
						new DialogInterface.OnClickListener()
						{
							public void onClick ( DialogInterface dialog , int item )
							{
								// 这里item是根据选择的方式,
								// 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
								if (item == 1)
								{
									Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
									startActivityForResult(getImageByCamera, 1);
								} else
								{
									Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
									getImage.addCategory(Intent.CATEGORY_OPENABLE);
									getImage.setType("image/jpeg");
									startActivityForResult(getImage, 0);
								}
							}
						}).create();
				dlg.show();
			}
		};
		// 给imageView控件绑定点点击监听器
		imageView.setOnClickListener(imgViewListener);

	}

	@ Override
	protected void onActivityResult ( int requestCode , int resultCode , Intent data )
	{
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);

		ContentResolver resolver = getContentResolver();
		/**
		 * 因为两种方式都用到了startActivityForResult方法,
		 * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
		 * 这里的requestCode跟startActivityForResult里面第二个参数对应
		 */
		if (requestCode == 0)
		{
			try
			{
				// 获得图片的uri
				Uri originalUri = data.getData();
				// 将图片内容解析成字节数组
				mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
				// 将字节数组转换为ImageView可调用的Bitmap对象
				myBitmap = getPicFromBytes(mContent, null);
				// //把得到的图片绑定在控件上显示
				imageView.setImageBitmap(myBitmap);
			} catch ( Exception e )
			{
				System.out.println(e.getMessage());
			}

		} else if (requestCode == 1)
		{
			try
			{
				super.onActivityResult(requestCode, resultCode, data);
				Bundle extras = data.getExtras();
				myBitmap = (Bitmap) extras.get("data");
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
				mContent = baos.toByteArray();
			} catch ( Exception e )
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 把得到的图片绑定在控件上显示
			imageView.setImageBitmap(myBitmap);
		}
	}

	public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts )
	{
		if (bytes != null)
			if (opts != null)
				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts);
			else
				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
		return null;
	}

	public static byte[] readStream ( InputStream inStream ) throws Exception
	{
		byte[] buffer = new byte[1024];
		int len = -1;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while ((len = inStream.read(buffer)) != -1)
		{
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();
		outStream.close();
		inStream.close();
		return data;

	}

}


 通过相册拿到图片路径等信息
        Uri uri = data.getData();
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        String imgNo = cursor.getString(0); //图片编号
        String imgPath = cursor.getString(1); //图片文件路径
        String imgSize = cursor.getString(2); //图片大小
        String imgName = cursor.getString(3); //图片文件名


第二个包是对照片进行剪裁等操作

    
[2] Xcode4 惯用快捷键
    来源: 互联网  发布时间: 2014-02-18
Xcode4 常用快捷键
基础篇

    command + arrow up / down                        切换 当前文件头文件和实现文件
    control + command + arrow left/right        切换历史上/下一个文件
    command B/R                                                   编译 / 运行
    command +  left click   on word                     可以在 方法的声明/实现, 变量的定义, 类的定义中跳转
    option  + left click  on word                            对当前内容做 快速帮助
    shift + command + Y                                        显示 debug工作区
    command + f   / option + command + f        搜索/替换  (搜索后 command + G 可以跳到下一个结果)
    shift + command + F                                        是全局搜索,非常方便
    (esc)                                                                    自动完成菜单

PS. 还有几个OSX系统通用的命令也很有效率

    option + arrow left / right                以单词为单位移动光标
    command + arrow left /right           移动光标到行头,行尾

进阶篇

    shift + command + o            快速定位文件
    shift + command + j             在项目导航中显示当前文件 (在大项目中尤其好用,推荐!)
    option + click 项目导航中的文件      可以在辅助编辑器里打开该文件, 方便同时查看多个源文件 (默认的辅助编辑器功能很弱,这样基本能找回xcode3的 split screen功能了)
    command  + L                      定为到文件的指定行
    shift + command +L            跳到光标所在位置 (当然更多时候我比较喜欢点下箭头来定位)
    control + i                             对选中文字 重新格式化缩进

Debug篇

    Xcode4 启用一体化IDE后, 调试程序有时候变得非常讨厌, 有同感的同学请继续往下看吧. (此内容学习至 ios tech talk ! )

    新建一个tab(cmd + t) 双击tab名修改名字为 CONSOLE     #不知道tab可以改名吧! 这弱爆的体验呐
    调整 CONSOLE tab为你喜欢的调试外观, 我喜欢有个大大的log窗口(shift+cmd+c), 左边显示debug栏,不显示右侧栏 , 留一点空间给编辑器, 方便断点时候跟踪 , 最后效果附图
    可以将console tab关闭了 (xcode会自动记忆此tab的设置, 这下应该明白你调试时候经常有时候有log窗口,有时候又需要自己打开的原因了吧 )
    在设置中打开 behavior 这选项
    选择 run start , 只勾选 `show tab CONSOLE` 和 `show navigator Debug`
    把 run complete 里的选项全关了.   # 这样调试结束我们还能继续看log,而不是默认的log也被关闭
    完成, 运行 !  如果你有多个屏幕, 还可将console tab 拖出放置,效果更好!

    
[3] 旋钮在Activity屏幕中拖动,定位
    来源: 互联网  发布时间: 2014-02-18
按钮在Activity屏幕中拖动,定位
private ImageView img1;
	private int screenWidth;
	private int screenHeight;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		img1 = (ImageView) findViewById(R.id.imageView1);

		DisplayMetrics dm = getResources().getDisplayMetrics();
		screenWidth = dm.widthPixels;
		screenHeight = dm.heightPixels - 50;

		img1.setOnTouchListener(movingEventListener);
		img1.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				System.out.println(333333);
				Toast.makeText(RemoveImageActivity.this, "点击咯", Toast.LENGTH_SHORT).show();
			}
		});
	}

	private OnTouchListener movingEventListener = new OnTouchListener() {
		int lastX, lastY;

		public boolean onTouch(View v, MotionEvent event) {
			if (event.getAction() == event.ACTION_DOWN) {
				lastX = (int) event.getRawX();
				lastY = (int) event.getRawY();
				System.out.println(11111);
			}
			if (event.getAction() == event.ACTION_MOVE) {
				System.out.println(222222);
				int dx = (int) event.getRawX() - lastX;
				int dy = (int) event.getRawY() - lastY;

				int left = v.getLeft() + dx;
				int top = v.getTop() + dy;
				int right = v.getRight() + dx;
				int bottom = v.getBottom() + dy;
				// 设置不能出界
				if (left < 0) {
					left = 0;
					right = left + v.getWidth();
				}

				if (right > screenWidth) {
					right = screenWidth;
					left = right - v.getWidth();
				}

				if (top < 0) {
					top = 0;
					bottom = top + v.getHeight();
				}

				if (bottom > screenHeight) {
					bottom = screenHeight;
					top = bottom - v.getHeight();
				}

				v.layout(left, top, right, bottom);

				lastX = (int) event.getRawX();
				lastY = (int) event.getRawY();

			}
			return true;
		}
	};

 

如何返回值為TRUE,那麼,如果按鈕还有点击事件的话,点击事件失效了(监听不到);

如果返回值为FALSE。那么,拖动事件完毕之后,立即就执行了点击事件

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3