`

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]
分享到:
评论

相关推荐

    android studio项目实例

    ### Android Studio 项目实例详解:音乐播放器 #### 项目概览 本项目是一个基于 Android Studio 开发的...通过实践这些项目,开发者不仅能掌握基本的 Android 开发技能,还能深入了解 Android 平台的高级特性和技术。

    android开发资源汇总

    - Android基础教程:介绍Android开发的基本概念和技术。 - Android应用程序开发详解:涵盖从入门到进阶的各个方面。 - Android专业应用开发:面向更高级的应用开发需求。 - Android平台底层技术原理解析:深入...

    android 安卓 蓝牙资料汇总

    【Android 安卓 蓝牙资料汇总】 在Android平台上进行蓝牙开发是一项常见的任务,尤其在构建物联网(IoT)应用、设备配对和数据传输等方面。以下是对压缩包文件中涉及的Android蓝牙开发相关知识点的详细说明: 1. **...

    android界面效果全汇总

    Android界面效果的全面汇总涉及了Android应用开发中界面设计与交互效果的多个方面。以下将从给定文件的标题和描述中提取并详细阐述相关知识点。 ### 1. Activity页面切换效果 Activity页面切换效果是用户在使用...

    Android平台输入法源码汇总

    "Android平台输入法源码汇总"是一个资源集合,对于想要深入理解输入法实现机制或者开发自己的Android输入法的人来说,具有很高的参考价值。 首先,我们来探讨Android输入法的基本架构。Android输入法主要由服务端...

    Android基础知识.pdf

    ### Android基础知识概览 #### 一、Android简介 Android是一个为移动设备设计的软件栈,由Google维护并主导发展,包含操作系统、中间件以及一系列关键应用程序。它为开发者提供了广泛的工具集与API,使得开发者...

    android 开发技巧总汇

    以上就是Android开发中的一些核心技巧,理解并熟练运用这些知识点,能帮助开发者更好地构建功能丰富、用户体验优良的应用程序。在实际项目中,还需要关注性能优化、内存管理、多线程处理、网络请求、数据库操作等...

    android界面特殊全汇总

    ### Android界面特殊效果全汇总 #### 一、Activity页面切换效果 在Android开发中,页面间的过渡动画可以显著提升用户体验,让应用看起来更加流畅和专业。从Android 2.0开始,开发者可以通过`...

    50个优秀的Android项目源码

    "telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器)"是一个音乐播放应用,它涵盖了音频播放、流媒体服务集成和音乐库管理等功能,对于想要开发音乐应用的开发者提供了丰富的学习材料。 最后,"仿Siri的...

    Android知识系统汇总

    1. **Android基础知识**:这是学习Android开发的起点,包括Java语言基础、Android Studio的使用、XML布局设计、Activity生命周期管理等。了解这些基础知识能够构建一个稳固的开发环境。 2. **Android组件**:...

    android笔试汇总

    在IT行业中,Android平台是移动应用开发的重要领域,尤其对于软件工程师来说,了解并掌握Android基础知识至关重要。"Android笔试汇总"这个主题包含了Android开发者在面试或笔试时可能会遇到的关键知识点,这些知识点...

    Android开发技巧总汇

    ### Android开发技巧总汇 #### 1. 入门实例剖析 在开始深入探讨各种Android开发技巧之前,我们首先从一个简单的入门实例入手——“记事本”应用。这一部分旨在帮助初学者快速上手,并逐步熟悉Android开发的基本...

    Android系列问答汇总

    在Android系列问答汇总中,...总之,Android系列问答汇总涵盖的内容广泛,从基本的组件使用到高级的性能调优,每一个知识点都值得深入学习和实践。通过不断的学习和探索,你可以从Android开发的菜鸟逐渐成长为高手。

    android 中文API文档(系列汇总)

    "Android中文API文档(系列汇总)"是一个集合了Android各个组件API的中文参考资料,旨在为开发者提供便捷的查询途径,帮助他们在编程过程中快速找到所需的信息。这篇文档详尽地涵盖了Android系统的各个方面,包括但不...

    Learn Android Studio- Build Android Apps Quickly and Effectively

    本教材旨在帮助读者快速有效地学习Android Studio,并通过实践构建功能完善的Android应用程序。 #### 二、关于作者和技术审稿人 本书由Adam Gerber和Clifton Craig合著,他们都是在Android开发领域有着丰富经验的...

    android实习汇总 笔记

    ### Android实习汇总笔记知识点 #### 一、Android开发环境搭建 **知识点1:JDK安装** - **描述**:Java Development Kit(JDK)是Android应用开发的基础,必须首先安装JDK,推荐版本为1.6。 - **操作**:下载对应...

    Android 技巧汇总

    入门实例剖析是 Android 开发的基础部分,包括基本的 Activity 管理、Intent 使用、UI 布局等。通过学习和掌握这些基础知识,可以快速上手 Android 开发。 对话框处理 对话框处理是 Android 开发中非常重要的一...

Global site tag (gtag.js) - Google Analytics