这几天完成的内容有:

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. C++ vector使用实例

    C++ vector #include <iostream> #include <vector> #include <string> #include <al ...

  2. Spring MVC -- 单元测试和集成测试

    测试在软件开发中的重要性不言而喻.测试的主要目的是尽早发现错误,最好是在代码开发的同时.逻辑上认为,错误发现的越早,修复的成本越低.如果在编程中发现错误,可以立即更改代码:如果软件发布后,客户发现错误 ...

  3. HttpClient get请求获取数据流

    HttpClient get请求获取数据流,将数据保存为文件 public String getStreamFile(String url) throws Exception { HttpClient ...

  4. Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误

    背景: 项目有需求,将自己写的模块作为一个module给到大项目使用,所以准备把自己的项目打包成aar包. 一.如何将独立项目打包成aar: 1.修改module下的application 为libr ...

  5. 手撕面试官系列(十):面试必备之常问Dubbo29题+MySQL55题

    Dubbo专题 (面试题+答案领取方式见侧边栏) 1.Dubbo 支持哪些协议,每种协议的应用场景,优缺点?2.Dubbo 超时时间怎样设置?3.Dubbo 有些哪些注册中心?4.Dubbo 集群的负 ...

  6. redis学习(一)

    Redis学习内容: 1. 概念 2. 下载安装R 3. 命令操作 1. 数据结构 4. 持久化操作 5. 使用Java客户端操作redis 1. 概念: redis是一款高性能的NOSQL系列的非关 ...

  7. SQL Server日志处理及安全访问

    1.点SQL SERVER错误日志,右键,配置,限定错误日志的数目,比如6个 限制日志增长数量 2.然后运行命令: EXEC sp_cycle_errorlog ; 这个命令的作用是将当前日志归档,然 ...

  8. SPOJ Qtree系列

    Qtree1 将边权变为这条边连接的两个点中深度更深的点的点权,这样就可以变为带修改链上最大点权.直接树链剖分即可. 下面是一份C语言代码 #include<stdio.h> #inclu ...

  9. 24H玩转 Grafana 被工程师称相当专业,如何做到?

    国庆假期发生了两件小事,其一是我默默度过 35 周岁生日,其二是玩了下grafana `并在节后第一天被工程师 M 称赞:相当专业. 1.我为什么要玩 grafana 呢? 数月前我提交了一份数据后台 ...

  10. mysql中length与char_length字符长度函数使用方法

    在mysql中length是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符了,与char_length是有一点区别,本文章重点介绍第一个函数. mysql里面的length函数是一个用来 ...