`

android一些基础功能汇总

阅读更多
1.Android开发 给图片加边框
http://www.android100.org/html/201303/20/1941.html

2.Android开发之Bitmap图片旋转
  http://www.android100.org/html/201303/20/1934.html
3.安卓源码服务专家
       http://www.javaapk.com/
        http://www.javaapk.com/source/category/demo

4.ImageLoader显示图片
当然可以从sdcard中加载图片。他可以接收的URL有以下几种:
String imageUri = "http://site.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)

4.屏幕长亮
方法 1: 使用 PowerManager 和 WakeLock

In AndroidManifest.xml:

1

<uses-permission android:name="android.permission.WAKE_LOCK" />

在你的activity中:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 

PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); 

// 在 onResume()方法中加入:

mWakeLock.acquire(); //锁住屏幕,使其常亮

//在 onPause() 中加入:

mWakeLock.release();//解锁屏幕。让系统管理屏幕


方法 2: 使用标志 window flag FLAG_KEEP_SCREEN_ON

@Override 

protected void onCreate(Bundle icicle) { 

    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

}


5.Math取整方法
舍掉小数取整:Math.floor(2)=2
舍掉小数取整:Math.floor(2.1)=2
舍掉小数取整:Math.floor(-2.1)=-3
舍掉小数取整:Math.floor(-2.5)=-3
舍掉小数取整:Math.floor(-2.9)=-3
四舍五入取整:Math.rint(2)=2
四舍五入取整:Math.rint(2.1)=2
四舍五入取整:Math.rint(-2.5)=-2
四舍五入取整:Math.rint(2.5)=2
四舍五入取整:Math.rint(2.9)=3
四舍五入取整:Math.rint(-2.9)=-3
四舍五入取整:Math.rint(-2.49)=-2
四舍五入取整:Math.rint(-2.51)=-3
凑整:Math.ceil(2)=2
凑整:Math.ceil(2.1)=3
凑整:Math.ceil(2.5)=3
凑整:Math.ceil(2.9)=3
舍掉小数取整:Math.floor(-2)=-2
舍掉小数取整:Math.floor(-2.1)=-3
舍掉小数取整:Math.floor(-2.5)=-3
舍掉小数取整:Math.floor(-2.9)=-3
凑整:Math.ceil(-2)=-2
凑整:Math.ceil(-2.1)=-2
凑整:Math.ceil(-2.5)=-2
凑整:Math.ceil(-2.9)=-2
Math.round(3.14)3
Math.round(3.5)4
Math.round(-3.14)-3
Math.round(-3.5)-3

总结:floor向下取整,ceil向上取整;round和rint四舍五入,取绝对值后舍入,然后加上符号,遇到.5的时候向绝对值小的方向舍之。

6.ImageView图片显示
//Drawable 显示SD卡里图片
Drawable drawable = Drawable
					.createFromPath(ConstantEp.path_reading01_images + path);
			System.out.println("drawable :"+drawable);
			ivPic.setImageDrawable(drawable);
//Bitmap 显示SD卡里图片
			Bitmap b = ImageCacheUtil.getResizedBitmap(null, null,   
			        mContext, ImageCacheUtil.readSdPic(ConstantEp.path_reading01_images + path), 80, false);  
			ivPic.setImageBitmap(b);

//反射 显示图片		
int id = BaseCommon.getImage(mContext, path.substring(0, path.length()-4));
			System.out.println("id :"+id);
			ivPic.setImageResource(id);



//ImageCacheUtil

import java.io.File;
import java.io.InputStream;

import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Environment;

/**
 * @author frankiewei. 工具类.
 */
public class ImageCacheUtil {

	/**
	 * 获取合适的Bitmap平时获取Bitmap就用这个方法吧.
	 * 
	 * @param path
	 *            路径.
	 * @param data
	 *            byte[]数组.
	 * @param context
	 *            上下文
	 * @param uri
	 *            uri
	 * @param target
	 *            模板宽或者高的大小.
	 * @param width
	 *            是否是宽度
	 * @return
	 */
	public static Bitmap getResizedBitmap(String path, byte[] data,
			Context context, Uri uri, int target, boolean width) {
		Options options = null;

		if (target > 0) {

			/*Options info = new Options();
			// 这里设置true的时候,decode时候Bitmap返回的为空,
			// 将图片宽高读取放在Options里.
			info.inJustDecodeBounds = false;
			info.inPreferredConfig = Bitmap.Config.RGB_565;
			
			decode(path, data, context, uri, info);

			int dim = info.outWidth;
			if (!width)
				dim = Math.max(dim, info.outHeight);
			int ssize = sampleSize(dim, target);*/
			int ssize = 1;
			options = new Options();
			options.inPreferredConfig=Bitmap.Config.RGB_565;//表示16位位图 565代表对应三原色占的位数
			options.inInputShareable=true;
			options.inPurgeable=true;//设置图片可以被回收
			options.inSampleSize = ssize;
		}
		Bitmap bm = null;
		try {
			bm = decode(path, data, context, uri, options);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bm;

	}

	/**
	 * 解析Bitmap的公用方法.
	 * 
	 * @param path
	 * @param data
	 * @param context
	 * @param uri
	 * @param options
	 * @return
	 */
	public static Bitmap decode(String path, byte[] data, Context context,
			Uri uri, BitmapFactory.Options options) {

		Bitmap result = null;

		if (path != null) {
			result = BitmapFactory.decodeFile(path, options);
		} else if (data != null) {
			result = BitmapFactory.decodeByteArray(data, 0, data.length,
					options);
		} else if (uri != null) {
			// uri不为空的时候context也不要为空.
			ContentResolver cr = context.getContentResolver();
			InputStream inputStream = null;

			try {
				inputStream = cr.openInputStream(uri);
				result = BitmapFactory.decodeStream(inputStream, null, options);
				inputStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			} catch (OutOfMemoryError e) {
				e.printStackTrace();
			}

		}

		return result;
	}

	/**
	 * 获取合适的sampleSize. 这里就简单实现都是2的倍数啦.
	 * 
	 * @param width
	 * @param target
	 * @return
	 */
	private static int sampleSize(int width, int target) {
		int result = 1;
		for (int i = 0; i < 10; i++) {
			if (width < target * 2) {
				break;
			}
			width = width / 2;
			result = result * 2;
		}
		return result;
	}
	
	
	/**
	 *  读取本地图片
	 * @param context
	 * @param id=等价=R.drawable.pic
	 * @return
	 */
	public Bitmap recodeResPic(Context context , int id, int target) {
		Resources r = context.getResources();
		Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
				+ "://" + r.getResourcePackageName(id)
				+ "/" + r.getResourceTypeName(id) + "/"
				+ r.getResourceEntryName(id));
		Bitmap bitmap = ImageCacheUtil.getResizedBitmap(null, null,
				context, uri, target, false);
//		Bitmap bitmap = ImageCacheUtil.getResizedBitmap(null, null,
//				context, uri, 400, false);
		return bitmap;
	}
	
	// 本地sd卡里的图片读取转换成URI
	public static Uri readSdPic(String path) {
		File file = new File(path);
		return Uri.fromFile(file);
	}
	
	public Bitmap recodeResPic(Context context , int id) {
		Resources r = context.getResources();
		Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
				+ "://" + r.getResourcePackageName(id)
				+ "/" + r.getResourceTypeName(id) + "/"
				+ r.getResourceEntryName(id));
		Bitmap bitmap = ImageCacheUtil.getResizedBitmap(null, null,
				context, uri, 100, false);
		return bitmap;
	}
	
}


7.ImageView
ImageView android:scaleType="centerCrop"
CENTER :在视图中使图像居中,不执行缩放。
CENTER_CROP:均衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都大于等于 相应的视图坐标(负的内边距)
CENTER_INSIDE:均 衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都小于等于 相应的视图坐标(负的内边距)
FIT_CENTER:使用 CENTER 方式缩放图像
FIT_END:使用 END 方式缩放图像
FIT_START:使用 START 方式缩放图像
FIT_XY:使 用 FILL 方式缩放图像
MATRIX:绘制时,使用图像矩阵方式缩放


8.实现水平ListView,并且解决水平ListView在ScrollView中出现的滑动冲突
链接:http://liucanwen.iteye.com/blog/2020004

9. 获得控件的宽高
// 获取控件的宽高
    private int getViewWidth(View view) {
        int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
        int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
        view.measure(w, h);
        int height = view.getMeasuredHeight();
        int width = view.getMeasuredWidth();
        System.out.println("measure width=" + width + " height=" + height);
        return width;
    }


显示本地图片报错:OOM
[size=medium]public Bitmap readBitmap(Context context, int id){
	     BitmapFactory.Options opt = new BitmapFactory.Options();
	     opt.inPreferredConfig=Bitmap.Config.RGB_565;//表示16位位图 565代表对应三原色占的位数
	     opt.inInputShareable=true;
	     opt.inPurgeable=true;//设置图片可以被回收
	     InputStream is = context.getResources().openRawResource(id);
	     return BitmapFactory.decodeStream(is, null, opt);
	}  
	
	private AnimationDrawable setData(Context context) {
		AnimationDrawable frameAnim = new AnimationDrawable();
		for (int i = 0; i <10; i++) {
			int resId = new BaseCommon().getImageId(context, ("star_" + i)); 
			Bitmap bmp = readBitmap(mContext, resId);
			BitmapDrawable bmpDraw = new BitmapDrawable(bmp);
			frameAnim.addFrame(bmpDraw, 200);
		}
		// 设置为循环播放
		frameAnim.setOneShot(true);
		// 设置ImageView的背景为AnimationDrawable
		return frameAnim;
	}[/size]
分享到:
评论

相关推荐

    ssm基于Android的毕业设计选题系统设计与实现.zip

    4、完成前端Android用户界面的设计及后台信息管理、维护等功能的设计与实现,可实现创建课题、审核课题、选题等基本功能; 5、分学生、教师和教务员三种角色,实现用户登录及身份认证、题目维护、选题时间安排、选题...

    android用户界面之ProgressBar教程实例汇总

    用户界面是android开发中最基础的功能,也是与用户交互最直接的方式。  通过学习安卓开发这段时间,很容易找到关于android的各种UI常见元素的教程与实例。比如说:Edittext,Button ,ListView,TextView, checkbox,...

    Android开发应用实战详解源代码

    1.3 常见问题汇总 1.4 使用本书的配套实例 1.5 小结 第2章 android开发必备 2.1 android体系结构 2.1.1 各种库和android运行环境 2.1.2 应用程序框架 2.1.3 操作系统层 2.1.4 应用程序 2.2 android应用程序组成 ...

    毕业设计 程序 android 个人理财

     统计管理模块:对一段时间的收支信息进行汇总、可以对个人所有财产进行统计。  预算管理模块:以月为单位,用户对自己的收入和支出做一个计划表  盈余计划模块:根据计划表与实际的收支表进行计算,得出的...

    android用户界面之Notification教程实例汇总

    用户界面是android开发中最基础的功能,也是与用户交互最直接的方式。通过学习安卓开发这段时间,很容易找到关于android的各种UI常见元素的教程与实例.现在特地总结了Android用户界面之Notification 的相关信息,分...

    Android常用的intent action汇总

    Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。Intent作为联系各...

    基于Android的毕业设计选题系统设计与实现+毕业论文

    4、完成前端Android用户界面的设计及后台信息管理、维护等功能的设计与实现,可实现创建课题、审核课题、选题等基本功能; 5、分学生、教师和教务员三种角色,实现用户登录及身份认证、题目维护、选题时间安排、选题...

    Android项目源码带悬浮窗和图表统计的流量助手.zip

    本项目是一个基于安卓的带悬浮窗和图表统计的流量助手项目源码,程序主要功能: 1、记录本月、当天的手机数据流量和WIFI流量 2、记录每个程序的当天使用情况 3、流量悬浮窗,显示每秒的流量情况(默认的是每5秒...

    深入解析Android中的RecyclerView组件

    前些日子,组里为了在目前的Android程序里实现基于ListView子项的动画...这里主要是介绍RecyclerView的基本功能、设计理念,以及系统提供API的情况。 什么是RecyclerView RecyclerView是在Android L(也就是后来的Lo

    Android学习系列教程实例.pdf

    Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................

    andriod理财管理

    基于Android的理财软件管理系统"设计的初衷是使人们能够在高速运转的生活中随时随地记录、汇总、查询自己的收支、借贷等情况,并满足家庭理财的各种基础需求,例如收入管理、支出管理、预算管理、借贷详情、明细汇总、...

    基于android的酒店点餐app

    6:服务管理:顾客有什么需要或者要呼叫服务员的时候可以使用此功能模块。 ———————————————— 原文链接:https://blog.csdn.net/u014388322/article/details/128770483 源码文件说明: 1:源代码 2...

    xmljava系统源码-BaseDemo:BaseDemo是AndroidMVVM+Retrofit+OkHttp+Coroutine协程+组

    旨在帮助您快速构建属于自己的APP项目架构,做到快速响应上手,另外再长期的实践经验中汇总了大量的使用工具类,主要放在了项目 lib_common 组件中,以供大家参考使用。具体使用请开发者工具自己项目需求决定选择...

    Android-Zxing:android google zxing 可配置扫描框、线样式 ,生成二维码(文字、联系人)

    相信很多童鞋都有此体会,所以借此机会就在Zxing 官方客户端基础上修改,去除无用功能并二次封装达到可扩展。 官方客户端目前问题汇总 设置功能多余 竖屏后不能正向扫描条形码 扫描框大小、颜色、扫描线配置不够灵活...

    Java 知识汇总(资源,工具,笔记,源码,文章,文档分类整理).zip

    Java 知识汇总(资源,工具,笔记,源码,文章,文档分类整理).zip ## 项目宗旨 - **Java基础** 面向对象基本语法,抽象类,接口,内部类等;常用类api使用;常用算法,常用加密算法;Rxjava的使用;Http客户端接口测试,Okhttp的...

    java安卓仿微信聊天软件源码-ztd328423.github.io:个人博客

    java安卓仿微信聊天软件源码 # 复习资料 类库 应用架构 Android 这是一份详细的RxJava学习攻略 ...Framework,即Android优秀开源框架汇总。包含:网络请求okhttp,图片下载glide,数据库greenDAO,链

    flutter_wanandroid::fire:项目基于 Flutter 移动应用框架,采用 Dart 语言编写,努力打造一款优秀的 [玩Android] 客户端

    Flutter 版 WanAndroid 客户端前言项目是继 之后的又一款 [玩Android] APP ,其主要功能以及界面UI风格和 基本相同,不过也有一些不一样。在学习 Flutter 的过程中,收集了一些很好的学习网站以及插件,并做了汇总,...

    移动终端应用开发—三次实验源程序汇总

    前两次实验是Android开发项目,开发环境:Android Studio。最后一个文件是IOS实验项目,开发环境:Xcode。三次实验项目名称分别为:SharePreferences的应用、SQLite数据库的使用、IOS基本控件的使用。所属课程:移动...

    color-utils:简单的功能,可使用Vanila Javascript编写的颜色

    基本功能与javascript中的颜色配合使用 介绍 该库的目的是对我用来处理颜色的功能进行汇总。 正如我所说,它非常有限,因为它只包含我整个项目中需要的功能。 一些可能的用例是根据背景颜色(最好在黑色和白色之间...

    基于安卓开发的智能车载APP 具有智能车载/健康检测/地图定位/短信验证/登陆注册等功能 数据存储与传输采用MySQL+PHP+

    本项目从车主身体健康以及车内环境信息出发,通过集成在车主驾驶座位、安全带等车内传感器或外置检测设备,定时为车主做出基础体检,通过测量得到的温度、血压、心率、酒精含量等生命体征信息,将数据存入到车载中控...

Global site tag (gtag.js) - Google Analytics