`
helloandroid
  • 浏览: 275766 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
107f8db3-b009-3b79-938a-dafddb49ea79
Android腾讯微博客户...
浏览量:95710
社区版块
存档分类
最新评论

Android腾讯微薄客户端开发七:图片加圆角以及时间处理工具类

阅读更多
给图片加上圆角效果好看多了。



public class ImageUtil {

	public static InputStream getRequest(String path) throws Exception {
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestMethod("GET");
		conn.setConnectTimeout(5000);
		if (conn.getResponseCode() == 200){
			return conn.getInputStream();
		}
		return null;
	}

	public static byte[] readInputStream(InputStream inStream) throws Exception {
		ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
		byte[] buffer = new byte[4096];
		int len = 0;
		while ((len = inStream.read(buffer)) != -1) {
			outSteam.write(buffer, 0, len);
		}
		outSteam.close();
		inStream.close();
		return outSteam.toByteArray();
	}
	
	public static Drawable loadImageFromUrl(String url){
        URL m;
        InputStream i = null;
        try {
            m = new URL(url);
            i = (InputStream) m.getContent();
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Drawable d = Drawable.createFromStream(i, "src");
        return d;
    }
	
	public static Drawable getDrawableFromUrl(String url) throws Exception{
		 return Drawable.createFromStream(getRequest(url),null);
	}
	
	public static Bitmap getBitmapFromUrl(String url) throws Exception{
		byte[] bytes = getBytesFromUrl(url);
		return byteToBitmap(bytes);
	}
	
	public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{
		byte[] bytes = getBytesFromUrl(url);
		Bitmap bitmap = byteToBitmap(bytes);
		return toRoundCorner(bitmap, pixels);
	} 
	
	public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{
		byte[] bytes = getBytesFromUrl(url);
		BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);
		return toRoundCorner(bitmapDrawable, pixels);
	} 
	
	public static byte[] getBytesFromUrl(String url) throws Exception{
		 return readInputStream(getRequest(url));
	}
	
	public static Bitmap byteToBitmap(byte[] byteArray){
		if(byteArray.length!=0){ 
            return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
        } 
        else { 
            return null; 
        }  
	}
	
	public static Drawable byteToDrawable(byte[] byteArray){
		ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);
		return Drawable.createFromStream(ins, null);
	}
	
	public static byte[] Bitmap2Bytes(Bitmap bm){ 
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
		return baos.toByteArray();
	}
	
	public static Bitmap drawableToBitmap(Drawable drawable) {

		Bitmap bitmap = Bitmap
				.createBitmap(
						drawable.getIntrinsicWidth(),
						drawable.getIntrinsicHeight(),
						drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
								: Bitmap.Config.RGB_565);
		Canvas canvas = new Canvas(bitmap);
		drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
				drawable.getIntrinsicHeight());
		drawable.draw(canvas);
		return bitmap;
	}
	
	 	/**
	      * 图片去色,返回灰度图片
	      * @param bmpOriginal 传入的图片
	     * @return 去色后的图片
	     */
	    public static Bitmap toGrayscale(Bitmap bmpOriginal) {
	        int width, height;
	        height = bmpOriginal.getHeight();
	        width = bmpOriginal.getWidth();    
	
	        Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
	        Canvas c = new Canvas(bmpGrayscale);
	        Paint paint = new Paint();
	        ColorMatrix cm = new ColorMatrix();
	        cm.setSaturation(0);
	        ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
	        paint.setColorFilter(f);
	        c.drawBitmap(bmpOriginal, 0, 0, paint);
	        return bmpGrayscale;
	    }
	    
	    
	    /**
	     * 去色同时加圆角
	     * @param bmpOriginal 原图
	     * @param pixels 圆角弧度
	     * @return 修改后的图片
	     */
	    public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {
	        return toRoundCorner(toGrayscale(bmpOriginal), pixels);
	    }
	    
	    /**
	     * 把图片变成圆角
	     * @param bitmap 需要修改的图片
	     * @param pixels 圆角的弧度
	     * @return 圆角图片
	     */
	    public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
	
	        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
	        Canvas canvas = new Canvas(output);
	
	        final int color = 0xff424242;
	        final Paint paint = new Paint();
	        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
	        final RectF rectF = new RectF(rect);
	        final float roundPx = pixels;
	
	        paint.setAntiAlias(true);
	        canvas.drawARGB(0, 0, 0, 0);
	        paint.setColor(color);
	        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
	
	        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
	        canvas.drawBitmap(bitmap, rect, rect, paint);
	
	        return output;
	    }
	
	    
	   /**
	     * 使圆角功能支持BitampDrawable
	     * @param bitmapDrawable 
	     * @param pixels 
	     * @return
	     */
	    public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {
	        Bitmap bitmap = bitmapDrawable.getBitmap();
	        bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));
	        return bitmapDrawable;
	    }
	
}


public class TimeUtil {
	
	public static String converTime(long timestamp){
		long currentSeconds = System.currentTimeMillis()/1000;
		long timeGap = currentSeconds-timestamp;//与现在时间相差秒数
		String timeStr = null;
		if(timeGap>24*60*60){//1天以上
			timeStr = timeGap/(24*60*60)+"天前";
		}else if(timeGap>60*60){//1小时-24小时
			timeStr = timeGap/(60*60)+"小时前";
		}else if(timeGap>60){//1分钟-59分钟
			timeStr = timeGap/60+"分钟前";
		}else{//1秒钟-59秒钟
			timeStr = "刚刚";
		}
		return timeStr;
	}
	
	public static String getStandardTime(long timestamp){
		SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
		Date date = new Date(timestamp*1000);
		sdf.format(date);
		return sdf.format(date);
	}
}
  • 大小: 2.1 KB
分享到:
评论
3 楼 xcstone 2011-11-01  
zuzhoumeiy??!!
2 楼 helloandroid 2011-08-19  
hh777 写道
LZ 开源代码里有没有发图片的功能啊,还有修改头像

可以发图片(要加一个jar包),修改头像好像没没发现改头像的API
1 楼 hh777 2011-08-19  
LZ 开源代码里有没有发图片的功能啊,还有修改头像

相关推荐

    Android腾讯微博客户端开发

    Android腾讯微博客户端开发

    Android 腾讯微博客户端源码

    腾讯微博客户端在请求用户授权时,会涉及Android的Manifest文件配置、运行时权限检查以及相应处理策略。 七、推送通知 为了及时提醒用户新消息,客户端通常会集成腾讯的SDK实现消息推送。这涉及到服务注册、消息...

    Android 腾讯微博客户端源码.zip

    这个微博客户端中用到得一些知识点。 1:sqllite数据库的应用 2:SharedPreferences结合sqllite保存默认登录用户 3:圆角背景,圆角头像,.9.png格式在android中的应用 4:布局方面的当然是最常用的ReleativeLayout,...

    移动应用Android 腾讯微博客户端源码.rar

    本篇文章将基于提供的"移动应用Android 腾讯微博客户端源码"进行深入解析,揭示其背后的设计理念、技术架构以及实现细节,为Android开发人员提供宝贵的参考资料。 首先,我们需要理解Android应用的基本结构。一个...

    Android 腾讯微博客户端源码1.rar

    【标题】"Android 腾讯微博客户端源码1.rar" 涵盖了Android平台上腾讯微博客户端应用程序的源代码,这是一个深入理解Android应用开发、社交网络集成以及腾讯微博API使用的宝贵资源。在这个源码中,我们可以看到如何...

    Android程序研发源码Android 腾讯微博客户端源码.zip

    本次我们关注的是"Android腾讯微博客户端源码",这是一份可以帮助开发者深入了解腾讯微博客户端实现细节的宝贵资源。通过对这份源码的学习,我们可以了解到如何构建一个功能完备、用户友好的社交应用。 首先,从...

    腾讯微博客户端源码

    【腾讯微博客户端源码】是一个面向Android平台的应用程序开发项目,它提供了全面的功能,与腾讯微博服务进行交互。源码的可用性使得开发者能够深入理解微博客户端的内部工作原理,学习如何实现各种社交网络功能,...

    android 腾讯微博客户端

    通过对"android 腾讯微博客户端"源代码的深入学习,开发者不仅能掌握Android应用开发的基础知识,还能了解到如何与第三方服务集成,以及实现一个完整的社交应用。这对于提升Android开发技能和理解实际项目开发流程...

    android仿腾讯微博客户端

    《Android仿腾讯微博客户端开发详解》 在移动互联网飞速发展的今天,社交应用已经成为人们日常生活中不可或缺的一部分。作为中国主流的社交媒体平台,腾讯微博在移动端的重要性不言而喻。本篇将详细介绍如何在...

    android腾讯微博客户端源码

    android腾讯微博客户端源码,功能基本齐全。

    [腾讯微博Android客户端开发]课程文档及源代码

    【腾讯微博Android客户端开发】是一门深入探讨如何构建Android平台上腾讯微博应用的课程,涵盖了从基础知识到高级技术的完整开发流程。这门课程旨在帮助开发者理解Android应用开发的基本原理,特别是针对社交媒体...

    Android腾讯微博客户端源码1.zip

    【Android腾讯微博客户端源码1.zip】是一个包含安卓平台上的腾讯微博客户端应用程序的源代码集合。这个源码库为开发者提供了深入理解腾讯微博Android应用设计和实现的宝贵资源。通过研究这个源码,我们可以学习到...

    Android腾讯微博客户端开发五利用FootView实现ListView滑动动态

    在Android应用开发中,腾讯微博客户端的构建是一个典型的案例,涉及到许多高级技术和设计模式。本篇文章将聚焦于如何利用FootView来实现ListView的滑动动态效果,这在提供用户友好的交互体验上至关重要。 首先,...

    Android 腾讯微博客户端源码1.zip

    【Android 腾讯微博客户端源码分析】 在Android平台上,腾讯微博客户端是一款非常流行的社交媒体应用,它允许用户发布和浏览微博,与朋友互动。这个源码提供了宝贵的参考资料,可以帮助开发者深入理解Android应用的...

    Android腾讯微博客户端源代码

    腾讯微博程序在Andorid程序中也算比较流行的程序,通过这个源代码你或许会学习到一些意想不到的Java Android编程知识,包括一些图像处理、图片上传、SQLITTE数据库操作应用、音效读取等方面的知识技巧。

    Android 腾讯微博客户端源码.rar

    本资源是关于Android平台上腾讯微博客户端的源代码,对于想要深入了解Android应用开发,特别是社交应用开发的开发者来说,这是一个非常有价值的参考。通过对这个源码的学习,我们可以深入理解Android应用架构设计、...

Global site tag (gtag.js) - Google Analytics