android如何绘制一个带把的圆形,Android :修改头像并使用Bmob保存(显示为圆形)...

2024-01-20 11:40

本文主要是介绍android如何绘制一个带把的圆形,Android :修改头像并使用Bmob保存(显示为圆形)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天再写一个项目 之前写登陆注册界面的时候都没有涉及到头像和数据库 所以都比较好实现 这次加上了头像的部分 可以实现和网上的第三方数据库的连接 第三方数据库我使用的是Bmob Bmob 主页

很方便 我们先看一下成果

0c4c8b663c5b8f9178a644be74fdac50.png

d09c28318c3f83d29ec787603263df4c.png

adf3a181022c45c5fd738692e18b9ee8.png

所以这里面其实东西也还挺多的

所以这篇博客会从这几个方面去介绍如何完成的

1 Bmob的基础配置和注册登录的使用

2 点击修改Button可以出现相册 并且选择一个之后再显示到原来头像位置

3 把头像设置为圆形 选择新头像不论是什么形状都可以显示为圆形

4 上传头像到Bmob

5 觉得底下那两个Button好看的(我觉得挺好看的)嗯那个边框的实现

ok 开始吧:

一 Bmob的基础配置和注册登录的使用

Bmob的主页上面有链接 需要先注册一个账号然后第一次使用先看一下android Bmob快速入门

这个里面主要就是讲的第一次使用时需要配置的还有需要注意的东西

很详细但也需要注意很多地方

我写一下我遇到的一些问题

1.注意as是不需要复制包的 只需要在build里面写代码就可以了

但是千万不要把包导入重复了 比如他的大包里面就包含短信服务那个了 不需要再写了 写了就会出错

2 一定要在配置文件里加上允许联网操作的语句

3 一定要初始化Bmob 就是把密钥放在自己的oncreat( )里面

嗯 这是刚开始的这样子

下来就是要使用Bmob了 Bmob Android开发文档

开发文档很详细 可以仔细看看 我就以我这个项目的注册为例来看一下我是怎么使用的

首先我的用户除了用户名和密码之外还需要邮箱头像电话等信息

所以我继承了BmobUser 写了自己的用户类

注意 用户名和密码是不需要重写的

public class IpetUser extends BmobUser {

private String emile;

private Integer mobile;

private BmobFile image;

public void setEmile(String emile) {

this.emile = emile;

}

public void setMobile(Integer mobile) {

this.mobile = mobile;

}

public String getEmile() {

return emile;

}

public Integer getMobile() {

return mobile;

}

public void setImage(BmobFile image) {

this.image = image;

}

public BmobFile getImage() {

return image;

}

}

头像使用的是BmobFile类型

至于怎么弄的 一会说到头像上传再看

IpetUser user=new IpetUser();

然后通过user.set( )方法可以放入你输入的信息

再通过user.signUp( )注册就好了 挺简单的

这个部分就到这里 如果遇到什么问题可以讨论

二.点击修改Button可以出现相册 并且选择一个之后再显示到原来头像位置

我是使用系统自带相册

在修改按钮里面先是构建了一个intent对象

并将他的action 指定为Intent.ACTION_GET_CONTENT

然后设置必要的参数 通过 startActivityForResult(intent, 1);方法来打开相册程序选择照片了

看一下代码

modify_head.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

/* 开启Pictures画面Type设定为image */

intent.setType("image/*");

/* 使用Intent.ACTION_GET_CONTENT这个Action */

intent.setAction(Intent.ACTION_GET_CONTENT);

/* 取得相片后返回本画面 */

startActivityForResult(intent, 1);

}

});

所以重点就在startActivityForResult(intent, 1); 里面

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == RESULT_OK) {

Uri uri = data.getData();

path = getImagePath(uri, null);

ContentResolver cr = this.getContentResolver();

try {

Log.e("qwe", path.toString());

Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));

/* 将Bitmap设定到ImageView */

res_head.setImageBitmap(bitmap);

} catch (FileNotFoundException e) {

Log.e("qwe", e.getMessage(),e);

}

}

super.onActivityResult(requestCode, resultCode, data);

}

private String getImagePath(Uri uri, String seletion) {

String path = null;

Cursor cursor = getContentResolver().query(uri, null, seletion, null, null);

if (cursor != null) {

if (cursor.moveToFirst()) {

path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

}

cursor.close();

}

return path;

}

其中需要注意的是 path是图片的真实路径 因为在上传的时候需要真实路径

三. 把头像设置为圆形 选择新头像不论是什么形状都可以显示为圆形

这个本来是想自己写的但是在弄的过程中出现了一些问题所以就在git上用了一个

很方便

使用步骤这样的

1.在gradle里面

dependencies {

...

compile ‘de.hdodenhof:circleimageview:2.0.0‘

}

2 使用在xml里面这样和imageView一样 最后两个属性是可以给图片加边框的

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/head_image"

android:layout_width="120dp"

android:layout_height="120dp"

android:src="@mipmap/cat"

android:layout_centerHorizontal="true"

android:layout_marginTop="60dp"

app:civ_border_width="0.5dp"

app:civ_border_color="#4a9bec" />

在java代码中这样

res_head = (CircleImageView)findViewById(R.id.head_image);

就好啦 准备过一段时间自己实现一个

嗯 到时候一定会实现的

四 上传头像到Bmob

恩恩恩恩恩恩恩恩恩恩恩 我昨天一个晚上都卡死在这里 每册就失败 打印出来原因一直都是filename empty

来看一下步骤、

1 在bmob上添加image列

2 构造BmobFile类型

final BmobFile file=new BmobFile(Susername,null,new File(path).toString());

3 set进去user.setImage(file);

ok!!!!!!!!!!!!!

但是昨天我问题处在构造类型时只传进去一个参数

所以可以看一下构造方法 最后试了好多遍直到把三个参数都弄进去才注册成功

看一下没有注册之前的数据库

590ed9f05bbb6f6242ac154ade54592e.png

之后

a0fddfca12f3a7d6c53913311ddd2505.png

然后那一列也有啦 image那一列只存储了filename 图片在文件里

d78268aefd5335852ced25d6b4aaec2e.png

aee749ee4432fc10ec3dfa6ca7db9b7b.png

大概就这样 实现了在Bmob存储图片

五.我觉得我写的Button还挺好看的

android:layout_weight="10"

android:layout_width="0dp"

android:textSize="15dp"

android:hint="Sign up"

android:background="@drawable/sign_button"

android:layout_height="40dp" />

sign_button选择器因为点击是有效果的

android:drawable="@drawable/sign_seletor_nopressed"/>

android:drawable="@drawable/sign_seletor_pressed"/>

sign_seletor_nopressed

android:endColor="#ffffff" android:type="linear" android:angle="90"

android:centerX="0.5" android:centerY="0.5" />

android:bottom="2dp" />

sign_seletor_pressed

android:endColor="#7bbfea" android:type="linear" android:angle="90"

android:centerX="0.5" android:centerY="0.5" />

android:bottom="2dp" />

这个部分over.

哦哦哦哦哦哦哦哦哦哦哦哦哦 有点乱

但是下次我就可以写有头像的注册登陆啦!

这篇关于android如何绘制一个带把的圆形,Android :修改头像并使用Bmob保存(显示为圆形)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625900

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount