这几天完成的内容有:

1.“添加图片”按钮

2.添加图片功能

遇到的问题:

我想要将添加图片按钮放在右下角,所以采用了相对布局,但是问题随之二来,因为将导航栏设置成了半透明,所以图片放到右下角之后,半透明的导航栏会把图片挡住,最后采取的办法是把图片高度变大,导航栏挡住多处的部分,也算是勉强实现要求了,但是对于一些没有虚拟导航栏的手机,按钮距离底部的间隔会显得略大,但是目前技术实在想不出更好的办法了

  

打开图片

  在Activity Action里面有一个“ACTION_GET_CONTENT”字符串常量,该常量让用户选择特定类型的数据,并返回该数据的URI.我们利用该常量,然后设置类型为“image/*”,就可获得android手机内的所有image。然后再通过startActivityForResult让我们选择的image返回到Activity中去

  AddPicActivity.java

package cn.lixyz.tuji;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date; import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
import cn.lixyz.tuji.Util.GetDate;
import cn.lixyz.tuji.sqlite.MySQLiteOpenHelper; /**
* 添加图片类 选择图片之后,先判断用户是否安装SD卡,如果安装,则在SD卡中新建一个cn.lixyz.tuji目录,将选择的图片复制到目录中
*
* @author LGB
*
*/ public class AddPicActivity extends Activity implements View.OnClickListener { private ImageView iv_select_img;
private EditText et_image_name, et_image_tag, et_image_remark;
private Button bt_submit;
private Bitmap bitmap;
private File sdPath;
private String fileName = "TUJIE" + new Date().getTime();
private FileOutputStream fos;
private MySQLiteOpenHelper msoh;
private SQLiteDatabase database; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_addpic); initView(); } private void initView() {
iv_select_img = (ImageView) findViewById(R.id.iv_select_img);
et_image_name = (EditText) findViewById(R.id.et_image_name);
et_image_tag = (EditText) findViewById(R.id.et_image_tag);
et_image_remark = (EditText) findViewById(R.id.et_image_remark);
bt_submit = (Button) findViewById(R.id.bt_submit);
iv_select_img.setOnClickListener(this);
bt_submit.setOnClickListener(this);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
ContentResolver cr = this.getContentResolver();
try {
bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
long i = new Date().getTime();
copyPicToSDCard(bitmap);
Log.d("TTTT", "共耗时:" + (new Date().getTime() - i));
iv_select_img.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(), e);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_select_img:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 1); break;
case R.id.bt_submit:
String picName = et_image_name.getText().toString().trim();
String picTag = et_image_tag.getText().toString().trim();
String picRemark = et_image_remark.getText().toString().trim();
msoh = new MySQLiteOpenHelper(AddPicActivity.this, "TujiData", null, 1);
database = msoh.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("picName", picName);
cv.put("picTag", picTag);
cv.put("picRemark", picRemark);
cv.put("fileName", fileName);
cv.put("date", new GetDate().getDate());
database.insert("pics", null, cv);
database.close(); break;
}
} private void copyPicToSDCard(Bitmap bm) throws IOException {
if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
/* 得到SD卡得路径 */
sdPath = Environment.getExternalStorageDirectory();
try {
File dir = new File(sdPath + "/cn.lixyz.TuJi"); fos = new FileOutputStream(new File(dir + "/" + fileName + ".png"));
if (!dir.exists()) {
dir.mkdir();
bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
} else {
bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
fos.flush();
fos.close();
}
} else {
Toast.makeText(AddPicActivity.this, "未检测到您的SD卡,长时间使用本软件,会造成系统空间减少", Toast.LENGTH_SHORT).show();
}
}
}

  

图记 2016.1.7 获取本地图片、Bitmap转image的更多相关文章

  1. android获取本地图片并显示图片

    import java.io.FileNotFoundException; import android.content.ContentResolver; import android.content ...

  2. Android之获取本地图片并压缩方法

    这两天在做项目时,做到上传图片功能一块时,碰到两个问题,一个是如何获取所选图片的路径,一个是如何压缩图片,在查了一些资料和看了别人写的后总算折腾出来了,在此记录一下. 首先既然要选择图片,我们就先要获 ...

  3. IOS -- 获取本地图片和网络图片的大小size

    // 获取图片的size CGSize size = [UIImage imageNamed:@"regStep2_sex"].size; 获取网络图片的尺寸: // 根据图片ur ...

  4. Android 获取本地图片

    MainActivity.java public class RegisterActivity extends AppCompatActivity { private ImageView iv; @O ...

  5. Flutter 获取本地图片并剪切

    安装依赖 dependencies: ... image_picker: image_cropper android\app\src\main\AndroidManifest.xml 将UCropAc ...

  6. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/1873 ...

  7. Android 实例解说加入本地图片和调用系统拍照图片

    在项目的开发过程我们离不开图片.而有时候须要调用本地的图片,有时候须要调用拍照图片.同一时候实现拍照的方法有两种,一种是调用系统拍照功能.还有一种是自己定义拍照功能. 而本博文眼下仅仅解说第一种方法, ...

  8. phonegap(cordova) 自己定义插件代码篇(四)----读取本地图片

    有时候确实知道本地图片地址,要获取到base64  /** * 获取本地图片,包括路径和压缩后的 base64 */ (function (cordova) { var define = cordov ...

  9. JS预览图像将本地图片显示到浏览器上的代码

    js代码实现: 从file域获取本地图片url并将本地图片显示到浏览器上. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...

随机推荐

  1. MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120)

    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) ***** 解决方法 ...

  2. 安装Dubbo-admin

    1.下载dubbo源码 源码地址为github上的地址,可以使用git或者直接下载压缩包.https://github.com/alibaba/dubbo/tree/2.5.x 2.下载完之后的目录结 ...

  3. H3C 开局设置

    简介: 系统菜单  即 [H3C] 模式 一:恢复出厂设置 这个没什么说的,必须Console连接. 连上以后,在启动时Ctrl+B,进入管理启动菜单,删除文件,删除配置文件然后重启即可. Ctrl+ ...

  4. LODOP常见问题连接(含常见小问答博文)

    问答大全 纸张打印机 注册 table表格 clodop测试地址 字体 超文本 行间距.字间距 clodop回调函数 条码 页眉页脚 SET……STYLEA 水平居中 简短排查 提示报错 慢进度条 套 ...

  5. 【ARM-Linux开发】【CUDA开发】NVIDIA Jetson TX2 进阶:QtCreator安装

    Here we have a short article on installing Qt Creator on the NVIDIA Jetson TX1. Looky here: Note: Th ...

  6. ThinkPHP3(命名空间、RBAC)

    命名空间 当开发大型项目的时候,可以会需要成千上万的文件 面向对象通过命名空间来解决这个问题的. PHP命名空间是PHP5.3以后才出现的. 命名空间中可以出现:类,函数,常量 只有const定义的常 ...

  7. nginx 进程问题

    1 nginx的进程分为四种 master worker cacheLoader cacheManager. 实际接收请求的进程是 worker,master监控worker节点,之所以会多进程模式, ...

  8. 最少硬币数——Java

    问题:有n种硬币,面值分别为v1,v2,v3,…,vn,存于数组T[1:n]中,可以使用的各种面值的硬币个数存于数组Coins[1:n]中.对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法 ...

  9. libevent源码分析三--signal事件响应

    libevent支持io事件,timeout事件,signal事件,这篇文件将分析libevent是如何组织signal事件,以及如何实现signal事件响应的. 1.  sigmap 类似于io事件 ...

  10. IDEA中使用git

    这篇文章写的很好,记录参考 [转载] https://blog.csdn.net/autfish/article/details/52513465 https://www.jianshu.com/p/ ...