android 聊天背景图片,Android 实现从本地读取图片更改聊天背景

现在很多社交软件都有这个功能,因为本次我参加一个比赛也是要做一个社交软件,所以我就“画蛇添足”的添加了这个一个功能,因为我也是个Android初学者,所以说修改bug浪费了我至少15个小时,简直是苦逼。

废话不多少 开始;

首先 :需要的是聊天界面 ,本次不予讨论 聊天背景我是设在一个relativelayout里面 所以我只贴出这个布局的xml

1:聊天背景的XML (部分)

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

android:id="@+id/backgroundRL"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#eee">

2:我设置了一个确定界面 ,就是选着图片的时候确定是否是这张 这里也给出代码<?xml version="1.0" encoding="utf-8"?>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:background="#eee" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:background="#eee">

android:id="@+id/backgroundOK"

android:layout_width="100sp"

android:layout_height="wrap_content"

android:background="@drawable/btn_style_green"

android:text="确认"/>

android:id="@+id/backgroundNO"

android:layout_width="100sp"

android:layout_height="wrap_content"

android:background="@drawable/btn_style_white"

android:layout_toRightOf="@id/backgroundOK"

android:text="取消"

android:onClick="backgroundNO"/>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center_vertical">"

android:id="@+id/backgroundIV"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#eee" />

以上就是布局了 然后就是实现代码

3.首先我们说下思路,点击 聊天背景 按钮 -->调用系统的图库 -->选择图片-->读取图片的路径 -->在确定是否设置为背景图片的界面上显示该图片 -->点击是或否-->是则将布局文件背景修改,否则关闭当前acticity回到适当位置

以下代码为是否确认使用布局文件关联的java类

package com.feng.decipherstranger;

import java.io.FileNotFoundException;

import java.io.IOException;

import android.R.bool;

import android.R.string;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.ContentResolver;

import android.content.Intent;

import android.content.res.Resources;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore;

import android.provider.MediaStore.Images.Media;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.RelativeLayout.LayoutParams;

import android.widget.Toast;

public class ChatBackground extends Activity{

public static boolean isCash = false;

public static String path;

private final int RESULT_LOAD_IMAGE = 1;

private static final String IMAGE_TYPE = "image/*";

private ImageView backgroundIV;

private Button backgrooundYES;

private String iscashS;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.nothing);

//第一个调用系统图库

//Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType(IMAGE_TYPE);

startActivityForResult(intent,RESULT_LOAD_IMAGE);

//同时关闭nothing 不然会引起必须点击两次返回

//this.finish();

}

//重写onActivityResult方法

@SuppressLint("NewApi")

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

super.onActivityResult(requestCode,resultCode,data);

if(requestCode==RESULT_LOAD_IMAGE&&resultCode==RESULT_OK&&data!=null){

try {

Uri selectImage = data.getData();

ContentResolver resolver = getContentResolver();

Bitmap bm = MediaStore.Images.Media.getBitmap(resolver,selectImage);

String[] filePathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = resolver.query(selectImage,

filePathColumn, null, null, null);

int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

cursor.moveToFirst();

final String picturePath = cursor.getString(columnIndex);

path = picturePath;

//将选取的图片文件指定为聊天背景

backgroundIV = (ImageView)findViewById(R.id.backgroundIV);

backgroundIV.setBackground(Drawable.createFromPath(picturePath));

} catch (FileNotFoundException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

} catch (IOException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

backgrooundYES = (Button)findViewById(R.id.backgroundOK);

backgrooundYES.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO 自动生成的方法存根

isCash = true;

/*if (isCash) {

iscashS = "iscash is true";

}

Log.i(iscashS,path);*/

//提示

Toast.makeText(getApplicationContext(),"修改成功",Toast.LENGTH_SHORT).show();

finish();

}

});

}

else {

Toast.makeText(getApplicationContext(),"没有选择图片",Toast.LENGTH_SHORT).show();

}

}

public void backgroundNO(View v){//取消 方法

this.finish();

}

}

4.然后再在自己定义的聊天界面上 把静态的图片地址path字符串和 布尔型的静态iscash传到实现聊天界面的类中 进行操作

这里贴出主要代码

if(ChatBackground.isCash){

//Log.i("chatactivity test",ChatBackground.path);

}

backgroundRL = (RelativeLayout)findViewById(R.id.backgroundRL);

backgroundRL.setBackground(Drawable.createFromPath(ChatBackground.path));

注意:好像是Android 4.3吗什么的 修改了读取文件路径的那种宏,我也不是很懂那个,反正就是读取文件和获取文件路径的方法有点不一样了。

以上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零信任策略下云上安全信息与事件管理实践

简介&#xff1a;随着企业数字化转型的深入推进&#xff0c;网络安全越来越被企业所重视。为了构建完备的安全防御体系&#xff0c;企业通常会引入了防火墙(Firewall)、防病毒系统(Anti-Virus System&#xff0c;AVS)、入侵防御系统(Intrusion Prevention System&#xff0c;IP…

kl散度度量分布_数据挖掘比赛技巧——确定数据同分布

在数据挖掘比赛中&#xff0c;很重要的一个技巧就是要确定训练集与测试集特征是否同分布&#xff0c;这也是机器学习的一个很重要的假设[1]。但很多时候我们知道这个道理&#xff0c;却很难有方法来保证数据同分布&#xff0c;这篇文章就分享一下我所了解的同分布检验方法。封面…

Inclavare Containers:云原生机密计算的未来

简介&#xff1a;本文为你详细的梳理一次 Inclavare Containers 项目的发展脉络&#xff0c;解读它的核心思想和创新技术。 作为业界首个面向机密计算场景的开源容器运行时&#xff0c;Inclavare Containers 项目于 2020 年 5 月开源&#xff0c;短短一年多时间内发展势头非常迅…

没有操作系统程序可以运行起来吗?

作者 | 陆小风来源 | 码农的荒岛求生现在的程序员对操作系统已经习以为常了&#xff0c;但是你有没有想过&#xff0c;如果没有操作系统的话我们可以让程序运行起来吗&#xff1f;先说答案&#xff0c;当然是可以的&#xff0c;而且必须是可以的。你可以从这个角度来思考&#…

android 自定义控件viewgroup,Android自定义控件ViewGroup

1.自定义ViewGroup第一步重写OnMeasure方法&#xff1b;在onMeasure方法中一般情况下我们会利用父类传给我们的参数(int widthMeasureSpec, int heightMeasureSpec)来获取Mode和Size&#xff1a;final int widthMode MeasureSpec.getMode(widthMeasureSpec);final int heightM…

sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术

简介&#xff1a;What is sysAK、典型工具介绍、开源 3 方面介绍了 sysAK 系统&#xff0c;目前 sysAK 工具集已经在龙蜥社区开源&#xff0c;并且在系统运维 SIG、跟踪诊断 SIG 一起共建&#xff0c;希望大家后期加入 SIG 一起讨论共建。 编者按&#xff1a;本文整理自「云栖…

quill鼠标悬浮 出现提示_CHERRY MC8.1鼠标评测:超前设计延续军火箱信仰

CHERRY作为机械键盘品牌拥有非常高的知名度&#xff0c;许多朋友的第一把机械键盘就是CHERRY品牌。在CHERRY产品线中&#xff0c;最具信仰的一定是军火箱MX8.0键盘。键盘本身手感颜值俱佳&#xff0c;独特的军火箱包装更是收获了大批粉丝。至于最配这把键盘的鼠标却一直让网友们…

高并发IO的底层原理

作者 | 阿辉来源 | Andy阿辉思考&#xff1a;作为程序员的我们&#xff0c;在编写软件进行文件读取&#xff0c;网络收发数据时&#xff0c;是不关心其具体的内部数据传输的。只关心把数据传输到缓冲区或及时从缓冲区读取数据。那么内部究竟是如何实现的呢&#xff0c;今天这篇…

新能源汽车太猛了,这些卡脖子技术你了解吗?

简介&#xff1a;从汽车行业的变化&#xff0c;我们即可初步看出芯片的重要性&#xff0c;那么&#xff0c;芯片对汽车行业的发展具体有哪些重要影响呢&#xff1f; 根据全球汽车咨询机构Auto Forecast Solutions统计的数据&#xff0c;截至10月10日&#xff0c;由于芯片短缺&…

android6 存储卡异常,手机SD卡无法读取时,如何在手机上修复损坏的SD卡?

吴川华南区技术负责人概要手机发生SD卡无法读取的情况时&#xff0c;无法读取的问题是由什么原因而引起的呢&#xff1f;我们又应该如何修复手机受损的SD卡呢&#xff1f;手机SD卡无法读取的常见原因及解决方法SD卡接触不良有时&#xff0c;SD卡无法读取识别&#xff0c;可能是…

龙蜥社区成立系统运维SIG,开源sysAK系统运维工具集

简介&#xff1a;系统运维SIG致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 OpenAnolis 龙蜥社区&#xff08;以下简称“龙蜥社区”&#xff09;正式成立系统运维&#xff08;System Operation&Maintenance, sysOM&…

奔跑吧兄弟变成机器人是哪一期_奔跑吧预告,郑恺郭麒麟回归,而我却被女嘉宾的颜值吸引了...

哈喽小伙伴们&#xff0c;近期大家都看了《奔跑吧黄河篇》吗&#xff1f;现在已经播到第二期了&#xff0c;相信大家依旧是对跑男系列节目非常感兴趣的&#xff0c;播放量非常高&#xff0c;稳稳占据TX和AQY两大视频平台的综艺播放第一名的位置&#xff0c;可见网友们真的是非常…

院士专家热议如何拥抱“东数西算”,第二届中国IDC行业Discovery大会顺利召开

4月21日&#xff0c;一场别开生面的主题为“聚光奔赴”的数据中心行业大会圆满落下帷幕。由中国通信工业协会数据中心委员会指导&#xff0c;中国IDC圈与世纪互联共同主办的“2022年第二届中国IDC行业Discovery大会”在线上召开&#xff0c;会议聚焦国家“双碳”目标、“东数西…

刺客列传鸿蒙记,苒苒流年,春鸿秋燕,来往终何益。

【zhu shi 】:ran :[ran ran ]1.cao mao cheng de yang zi 。tang yan qian 《yi sha 》:“ran ran ji fang cao 。”2.qing rou de yang zi 。xie tiao 《za yong la mei 》:“xin xie chu ran ran 。”3.qing qing piao dong de yang zi 。he zhu 《zhe gu tian 》:“xiang r…

一文理解 K8s 容器网络虚拟化

简介&#xff1a;本文需要读者熟悉 Ethernet&#xff08;以太网&#xff09;的基本原理和 Linux 系统的基本网络命令&#xff0c;以及 TCP/IP 协议族并了解传统的网络模型和协议包的流转原理。文中涉及到 Linux 内核的具体实现时&#xff0c;均以内核 v4.19.215 版本为准。 作者…

video怎么重新加载 vue_vue 事件中更改video的src成功,视频不加载

也试过改soucre&#xff0c;也是这个样子麻烦解惑&#xff0c;试了好几个小时了HTML点击的地方click"show3d(../assets/video/2.mp4)">插入视频的地方事件show3d(url) {var sourceDom $();$(".video").html();$(".video").append(sourceDom)…

应对 Job 场景,Serverless 如何帮助企业便捷上云

简介&#xff1a;函数计算作为事件驱动的全托管计算服务&#xff0c;其执行模式天生就与这类 Job 场景非常契合&#xff0c;对上述痛点进行了全方面的支持&#xff0c;助力“任务”的无服务器上云。 作者&#xff1a;冯一博 任务&#xff08;Jobs&#xff09;&#xff0c;是互…

Gartner发布新兴技术研究:深入洞悉元宇宙

供稿 | Gartner 出品 | CSDN云计算 根据Gartner预测&#xff0c;2026年全球30%的企业机构将拥有元宇宙产品和服务。 元宇宙是一个由独立但相互连接的网络所组成的持久、沉浸式数字环境&#xff0c;但目前尚未确定这些网络将使用的通信协议。元宇宙能够实现持久、去中心化、可…

android 离屏渲染 简单书,Android OpenGL ES 8.FrameBuffer离屏渲染

作用FrameBuffer Object,也称FBO&#xff0c;离屏渲染&#xff0c;可以摆脱屏幕的束缚&#xff0c;在后台做图像处理。理解FrameBuffer和Texture绑定&#xff0c;FrameBuffer犹如画板&#xff0c;而Texture犹如画纸&#xff0c;我们在上面画东西&#xff0c;画完后&#xff0c;…

双11实时物流订单实践

简介&#xff1a;随着双11的开启&#xff0c;物流业也迎来了年度大考。2021年双11期间&#xff0c;递四方作为物流仓储服务方&#xff0c;布局仓库和分拣点超40个&#xff0c;50w平米作业场地&#xff0c;单日订单峰值达千万级别&#xff0c;海量购物订单由递四方配送到家&…