`
切切歆语
  • 浏览: 30203 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

登录圆形头像之网络加载与缓存到本地

阅读更多

Android开发中常常有用户头像显示,似乎大多数都是圆形显示,如果每次加载网络头像,会频繁的请求网络,所以本文主要说的是登录时的头像网络加载和缓存到本地,以便于下次加载时直接从本地获取即可。

 

效果图

 

      

 

自定义控件实现圆形头像显示请看, Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示 这篇博客即可。

 

 

 

public class MainActivity extends Activity implements OnClickListener {

	private ImageView mImageView, mImageView2;
	String url = " http://avatar.csdn.net/8/6/0/1_dickyqie.jpg";
	private String mFileName;
	private String mSaveMessage;
	Util util = new Util();
	private Bitmap mBitmap;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		// TODO Auto-generated method stub
		mImageView = (ImageView) findViewById(R.id.personal_image);
		mImageView2 = (ImageView) findViewById(R.id.personal_image2);
		findViewById(R.id.button1).setOnClickListener(this);
		findViewById(R.id.button2).setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1:
			new Thread(connectNet).start();
			break;
		case R.id.button2:
			Bitmap ben = BitmapFactory.decodeFile(Util.ALBUM_PATH + mFileName);
			mImageView2.setImageBitmap(ben);
			break;
		default:
			break;
		}
	}

	private Runnable saveFileRunnable = new Runnable() {
		@Override
		public void run() {
			try {
				util.saveFile(mBitmap, mFileName);
				mSaveMessage = "图片保存成功!";
			} catch (IOException e) {
				mSaveMessage = "图片保存失败!";
				e.printStackTrace();
			}
			messageHandler.sendMessage(messageHandler.obtainMessage());
		}

	};

	private Handler messageHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			Toast.makeText(MainActivity.this, mSaveMessage, 1).show();

		}
	};

	/*
	 * 连接网络 由于在4.0中不允许在主线程中访问网络,所以需要在子线程中访问
	 */
	private Runnable connectNet = new Runnable() {
		@Override
		public void run() {
			try {
				String filePath = url;
				mFileName = "test.jpg";

				// 以下是取得图片的两种方法
				// 方法1:取得的是byte数组, 从byte数组生成bitmap
				byte[] data = util.getImage(filePath);
				if (data != null) {
					mBitmap = BitmapFactory.decodeByteArray(data, 0,
							data.length);
				} else {
					Toast.makeText(MainActivity.this, "Image error!", 1).show();
				}

				// ******** 方法2:取得的是InputStream,直接从InputStream生成bitmap
				// mBitmap =
				// BitmapFactory.decodeStream(util.getImageStream(filePath));
				// 发送消息,通知handler在主线程中更新UI
				connectHanlder.sendEmptyMessage(0);
			} catch (Exception e) {
				Toast.makeText(MainActivity.this, "无法链接网络!", 1).show();
				e.printStackTrace();
			}

		}

	};

	private Handler connectHanlder = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			// 更新UI,显示图片
			if (mBitmap != null) {
				mImageView.setImageBitmap(mBitmap);// display image
				new Thread(saveFileRunnable).start();
			}
		}
	};

}



 

不要忘记AndroidManifest.xml加权限哦!

 

 

由于代码太多,完整代码未给出,源码直接下载即可

 

 

源码点击下载

分享到:
评论

相关推荐

    安卓头像制作图片圆角剪裁相关-登录圆形头像之网络加载与缓存到本地.rar

    本压缩包文件"安卓头像制作图片圆角剪裁相关-登录圆形头像之网络加载与缓存到本地.rar"主要涵盖了以下几个关键知识点: 1. **网络加载图片**:在移动应用中,图片通常来源于网络。开发者会使用像`Volley`、`OkHttp`...

    Android-Android圆形图片加载加载本地及网络图片

    本文将详细介绍如何实现一个可以加载本地和网络图片的圆形ImageView控件,以及封装过程中涉及的关键技术。 首先,我们创建一个新的自定义View类,让它继承自Android系统自带的ImageView。这样,我们可以利用...

    Android 绘制圆形头像

    与传统的方形头像相比,圆形头像更加柔和,能够更好地适应不同UI设计风格,提升整体美观度。 ### 二、准备工作 #### 1. 创建项目 在Android Studio中创建一个新的Android项目。如果你已经有了现成的应用项目,那么...

    圆形头像以及listview的下拉刷新、加载更多

    在事件处理中,通过网络请求或者本地数据库获取新的数据,然后使用`addFooterView()`添加一个加载中的提示视图,最后将新数据添加到Adapter的列表中,并调用`notifyDataSetChanged()`来更新ListView。 为了将这两个...

    圆形头像的实现

    在Android开发中,实现圆形头像是一个常见的需求,特别是在社交应用或者个人资料界面。这篇文章将详细讲解如何在Android Studio中创建并实现圆形头像的功能。 首先,我们需要理解Android中的图像处理方式。Android...

    Android圆形头像类,直接引用

    - 引入依赖:首先,你需要在项目的`build.gradle`文件中引入这个圆形头像类的相关库,或者直接将源代码复制到你的项目中。 - 创建实例:在布局XML文件中,使用这个圆形头像类替换默认的`ImageView`,或者在代码中...

    九宫格解锁+圆形头像

    在Android开发中,"九宫格解锁+圆形头像"是一种常见的用户界面设计,它结合了传统的九宫格解锁方式和圆形头像展示效果。这种设计通常用于个性化应用或者社交应用,提供用户友好的交互体验。以下是关于这个主题的相关...

    Android圆形头像

    在Android应用开发中,"圆形头像"是一个常见的需求,特别是在社交、聊天或者个人资料展示等场景中。本文将深入探讨如何在Android中实现这样的功能,包括头像的加载、显示以及点击后的交互操作。 首先,我们需要理解...

    仿微信自定义圆形群聊组合头像

    1. **头像选取与缩放**:首先需要从服务器获取或本地存储中读取各个用户的头像,然后根据预定的网格大小进行合适的缩放,确保每个头像在组合图中能正常显示。 2. **布局计算**:计算每个头像在组合图中的位置,这...

    自定义圆形头像

    总结来说,"自定义圆形头像"这个项目涉及到以下几个关键知识点: 1. 自定义View:创建新的View类并重写`onDraw()`方法。 2. 图片裁剪:使用Canvas和Bitmap操作实现圆形裁剪。 3. 图片加载库:如Glide的使用,以及...

    android 圆形头像裁剪

    圆形头像在UI设计上要考虑与整体风格的协调,例如边框颜色、背景透明度等。同时,考虑到不同尺寸屏幕的适配,头像大小应动态调整。 7. **权限管理**: 访问相册需要申请`READ_EXTERNAL_STORAGE`权限。从Android ...

    android 上传圆形头像,可编辑

    总的来说,实现“android 上传圆形头像,可编辑”这个功能涉及到了Android的图像处理、Intent交互、自定义View、图片加载库以及手势识别等多个技术点。开发者需要具备扎实的Android基础知识和良好的用户体验设计能力...

    Android 圆形头像实现

    此外,如果头像是网络资源,我们可以考虑使用异步加载库(如Glide或Picasso)来加载并缓存图片,以提高用户体验。 总结起来,实现Android圆形头像涉及了自定义View的绘制、Bitmap处理、肖像模式的利用以及性能优化...

    安卓圆形头像(内置6种,拉起来就能用 简单方便)

    6. **加载网络图片**: 如果头像是从网络获取的,那么需要集成网络库,如`Volley`、`OkHttp`或`Retrofit`,并结合`Glide`、`Picasso`等图片加载库来实现异步加载和缓存策略,确保用户体验流畅。 7. **动画效果**: ...

    Android-Android开发之制作圆形头像图片的功能实现。自定义View实现圆形头像效果。

    在项目实践中,我们还需要考虑一些额外的细节,比如图片加载库的集成(如Glide、Picasso等),以处理网络图片的加载和缓存。同时,对于不同尺寸的设备,需要确保图片按比例缩放,保持圆形头像的比例正确。在处理大...

    Android自定义圆形头像

    `ImageView`是Android系统提供的用于显示图片的控件,它可以加载本地资源、网络资源或drawable资源。但是,系统默认的`ImageView`并不支持直接将方形图片转换为圆形显示。因此,我们需要自定义一个`ImageView`子类,...

    Android 自定义圆形头像

    本教程将详细介绍如何实现一个自定义的圆形头像组件,其中包括从网络加载图片并使用Universal Image Loader ( UIL ) 图片加载库。 首先,让我们了解什么是Universal Image Loader (UIL)。UIL是一个强大的、高度可...

    改良版圆形头像+拍照+更改头像

    【标题】:“改良版圆形头像+拍照+更改头像”这一项目主要涉及的是移动应用开发中的用户界面设计和图像处理技术,特别是针对个人头像的定制化展示和拍摄功能。在移动应用中,用户的头像通常是其身份的象征,因此提供...

    android圆形头像

    "android圆形头像"这个主题涉及到的主要知识点是如何将矩形的图片转换为圆形展示。以下是一些详细的技术点和实现方法: 1. **自定义View**: 在Android中,我们通常会通过自定义一个`ImageView`子类来实现圆形头像...

Global site tag (gtag.js) - Google Analytics