JBOSS 点滴

丰丰的博客

#

android在布局中图片大小自适应

一、适应某控制:
      XML:

                <WebView
                    android:id="@+id/awaimage"
                    android:layout_width="90dp"
                    android:layout_height="80dp"
                    android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:scaleType="fitXY"

     JAVA:
/*            WebSettings webSettings = holder.imageView.getSettings();    
            webSettings.setUseWideViewPort(true); //设置加载进来的页面自适应手机屏幕 
            webSettings.setLoadWithOverviewMode(true); 
*/

            
//允许使用javascript  
       
//     webSettings.setJavaScriptEnabled(true); 

二、自动适应屏幕大小:
         WebSettings webSettings = holder.imageView.getSettings();   
         webSettings.setUseWideViewPort(true); //设置加载进来的页面自适应手机屏幕
         webSettings.setLoadWithOverviewMode(true); 
         //允许使用javascript  
         webSettings.setJavaScriptEnabled(true);

posted @ 2015-05-13 14:39 半导体 阅读(373) | 评论 (0)编辑 收藏

Android图片处理内存溢出学习

    

        Android图片处理内存溢出学习             

原文:

http://blog.csdn.net/huangbiao86/article/details/8072128

最近遇到一个问题,在Android机器上,调用自带的相机拍摄后获得相处,并且对获得的相片进行缩放,旋转,截取等操作,看似很简单,但是却遇到了一个,让人心疼的问题,我这里用五能手机进行测试,当然,功能测试是没有问题,当发给客户去测试的时候,却出现了内存溢出,哎无言啊...

原来他用的是三星的G3手机进行测试的,我们没有这款手机,后来借别人的G3手机测试,果然也出现这个问题:

  1. java.lang.OutOfMemoryError  
  2. at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)  
  3. at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:518)  
  4. at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:535)  
  5. at com.yippeearts.flashcards.CameraPage$1.onPictureTaken(CameraPage.java:73)  
  6. at android.hardware.Camera$EventHandler.handleMessage(Camera.java:734)  
  7. at android.os.Handler.dispatchMessage(Handler.java:99)  
  8. at android.os.Looper.loop(Looper.java:137)  
  9. at android.app.ActivityThread.main(ActivityThread.java:4514)  
  10. at java.lang.reflect.Method.invokeNative(Native Method)  
  11. at java.lang.reflect.Method.invoke(Method.java:511)  
  12. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)  
  13. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)  
  14. at dalvik.system.NativeStart.main(Native Method)  

这个在不同的手机上出现这种错误还是有点尴尬的。一直以为是对图片的逻辑处理出了什么问题,经过总结发现,估计是因为G3手机拍摄相片分辨率过高,使图片过大,造成过程中内存溢出,通过网上搜索若干解决加载大图片时内存溢出的问题:

 

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。

因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。
如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常
另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。


内存溢出解决办法:

1、模拟器RAM比较小,只有8M内存,当我放入的大量的图片(每个100多K左右),就出现上面的原因。由于每张图片先前是压缩的情况,放入到Bitmap的时候,大小会变大,导致超出RAM内存,具体解决办法如下:

  1. // 解决加载图片 内存溢出的问题  
  2. // Options 只保存图片尺寸大小,不保存图片到内存  
  3. BitmapFactory.Options opts = new BitmapFactory.Options();  
  4. // 缩放的比例,缩放是很难按准备的比例进行缩放的,其值表明缩放的倍数,SDK中建议其值是2的指数值,值越大会导致图片不清晰  
  5. opts.inSampleSize = 4;  
  6. Bitmap bmp = null;  
  7. bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],  
  8.                 opts);  
  9. // 回收  
  10. bmp.recycle();  

2、优化Dalvik虚拟机的堆内存分配

 

对于Android平台来说,其托管层使用的Dalvik JavaVM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手动干涉GC处理,使用dalvik.system.VMRuntime类提供的setTargetHeapUtilization方法可以增强程序堆内存的处理效率。当然具体原理我们可以参考开源工程,这里我们仅说下使用方法:   private final static floatTARGET_HEAP_UTILIZATION = 0.75f; 在程序onCreate时就可以调用VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);即可。

Android堆内存也可自己定义大小

对于一些Android项目,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商对RAM都比较吝啬,对于软件的流畅性来说RAM对性能的影响十分敏感,除了 优化Dalvik虚拟机的堆内存分配外,我们还可以强制定义自己软件的对内存大小,我们使用Dalvik提供的dalvik.system.VMRuntime类来设置最小堆内存为例:

  1. private final static int CWJ_HEAP_SIZE = 610241024 ;  
  2.   
  3. VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); //设置最小heap内存为6MB大小。当然对于内存吃紧来说还可以通过手动干涉GC去处理  

bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
★android 中用bitmap 时很容易内存溢出,报如下错误:Java.lang.OutOfMemoryError : bitmap size exceeds VM budget

 

主要是加上这段:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;

 eg1:(通过Uri取图片)

  1. private ImageView preview;  
  2. BitmapFactory.Options options = new BitmapFactory.Options();  
  3. options.inSampleSize = 2;//图片大小,设置越大,图片越不清晰,占用空间越小  
  4. Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options);  
  5. preview.setImageBitmap(bitmap);  

eg2:(通过路径去图片)

 

  1. private ImageView preview;  
  2. private String fileName= "/sdcard/DCIM/Camera/2010-05-14 16.01.44.jpg";  
  3. BitmapFactory.Options options = new BitmapFactory.Options();  
  4. options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一  
  5. Bitmap b = BitmapFactory.decodeFile(fileName, options);  
  6. preview.setImageBitmap(b);  
  7. filePath.setText(fileName);  

在图片处理的时候,确保图片引用及时回收。

posted @ 2015-05-12 18:54 半导体 阅读(223) | 评论 (0)编辑 收藏

安卓 html显示时,图片无法加载

<!--  hardwareAccelerated解决4.0启动了硬件加速 ,HTML网络图片无法正常显示的问题-->
android:hardwareAccelerated="false"

posted @ 2015-05-05 20:57 半导体 阅读(265) | 评论 (1)编辑 收藏

安卓显示HTML

方法1、使用 CDATA(推荐)
<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>
方法2、转义HTML标签
<string name="myHeadStr">&lt;b>&lt;u>bold, underline &lt;/u>&lt;/b></string>
在程序里引用:
Html.fromHtml(getResources().getString(R.string.myHeadStr));
效果图
android string html标签用法
string.xml代码
Code   ViewCopyPrint
  1. <string name="test"><Data><![CDATA[ <b><font color="#ff0000">ABC</font></b> ]]></Data></string>  

java代码:

Code   ViewCopyPrint
  1. import android.app.Activity;   
  2. import android.app.AlertDialog;   
  3. import android.content.DialogInterface;   
  4. import android.os.Bundle;   
  5. import android.text.Html;   
  6.   
  7. public class testActivity extends Activity {   
  8.     public void onCreate(Bundle savedInstanceState) {   
  9.         super.onCreate(savedInstanceState);   
  10.         AlertDialog.Builder dialog = new AlertDialog.Builder(testActivity.this);   
  11.         dialog.setTitle("测试HTML标签").setMessage(Html.fromHtml(getString(R.string.test))).setPositiveButton(getString(R.string.btn_confirm), new DialogInterface.OnClickListener() {   
  12.             public void onClick(DialogInterface dialog, int which) {   
  13.   
  14.             }   
  15.         }).create().show();   
  16.     }   
  17. }   

posted @ 2015-05-05 13:39 半导体 阅读(120) | 评论 (0)编辑 收藏

eclipse luna+tomcat7.0+JDK7.0+maven环境配置

eclipse luna+tomcat7.0+JDK7.0+maven环境配置

一、下载相关包:

eclipse luna下载地址 :  http://www.eclipse.org/downloads/

JDK7.0下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Tomcat7.0下载地址:

http://tomcat.apache.org/download-70.cgi

MAVEN下载地址:http://maven.apache.org/

二、环境变量配置(根据软件安装位置配置如下)

JAVA_HOME: D:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Java\jdk1.6.0_11\;

PATH: D:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Java\jdk1.6.0_11\bin;

M2_HOME:  D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5

PATH D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5\bin

三、    运行eclipse luna

绿色环保,直接运行eclipse.exe就行了


四、导入maven项目前配置

    
A,tomcat
配置





B,JDK配置


C,MAVEN
安装:


D,
导入maven项目:


E,
导入后如果项目报错,请执行:

在项目上右击,选择菜单maven->update project MAVEN会自动搜索项目中需要的jar包)

   F、运行服务:

选择run on server->tomcat 7

iE上输入:http://localhost:8080/项目名   测试一下吧。

posted @ 2015-02-12 10:04 半导体 阅读(2884) | 评论 (1)编辑 收藏

MAVEN环境变量配置

一、JDK配置:JAVA_HOME  PATH 
二、新建M2_HOME环境:  如:D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5
三、PATH:如:D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5\bin
     测试Maven环境是否搭建成功,在CMD下输入命令:
      mvn -v
     编译maven项目方法:cmd下指向项目目录下,运行命行:mvn compile
     mvn te

posted @ 2015-02-11 17:41 半导体 阅读(195) | 评论 (0)编辑 收藏

sqlserver创建用户,指定数据库,指定表的权限

http://www.cnblogs.com/gaizai/archive/2011/07/14/2106617.html
记住要选择dbo_owner 别选sysadmin

posted @ 2014-12-03 16:57 半导体 阅读(639) | 评论 (0)编辑 收藏

IREPORT报表实现

     摘要: 一、在JSP中通过传参数实现源代码:(在jasper模板中定义好查询条件及参数) Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><%@ page language="java" import="java.util...  阅读全文

posted @ 2014-11-19 11:47 半导体 阅读(371) | 评论 (0)编辑 收藏

Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结

Spring MVC程序中得到静态资源文件css,js,图片

文件的路径


问题总结

用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题,那就是程序数据都已经查询出来了,但界面样式仍然十分丑陋,加载不了 css,js,图片等资源文件。当你在浏览器上直接输入某个css文件的路径时,直接得到404错误,而路径肯定没有错,其原因就在于在web.xml 中配置了类似如下的 spring servlet:
程序代码 程序代码

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

请注意  <url-pattern>/</url-pattern> 这表示这个servlet 拦截了所有的请求,包括css,js等。所以出现上面描述的情况。如何解决这个css,js等路径问题呢,有如下几种解决方案.

1. 使用spring mvc resource 去读取静态文件
比如在 WEN-INF 下建立static 文件夹,并在 static 文件夹里面建立css 文件夹,然后建立 1.css  文件.
修改 mvc-dispatcher-servlet.xml 文件
程序代码 程序代码

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

这样配置之后,可以通过 http://your-ip:port/your-app/static/css/1.css 直接访问了。

2. 采用 default servlet
在 web.xml  里面配置
程序代码 程序代码

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

这样做了之后,所有前缀为static 的请求都交给default servlet 去处理。如果你请求  http://your-ip:port/your-app/static/css/1.css ,就表示在 webcontent 目录下的css文件夹下的1.css文件。

3. 通过文件扩展名进行处理
在 web.xml 里面配置
程序代码 程序代码

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>


4. 对spring servlet 不用restful 风格。在url 上加上前缀
程序代码 程序代码

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/app</url-pattern>
</servlet-mapping>

这样做的目的是让 dispatchservlet 去拦截以/app 开头的那些 URL,并不拦截css,js等。

5. 对spring servlet 不用restful 风格。在url 上加上后缀
程序代码 程序代码

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

这样做的目的是让 dispatchservlet 只拦截*.do 的url. 并不拦截css,js等。

上面介绍的5种方法,根据情况自己任意选择一种,现在没办法说那种好,那种方法不好,都有可取之处,用在不同的场景而已。

posted @ 2014-08-24 23:12 半导体 阅读(23856) | 评论 (3)编辑 收藏

easy ui API中文文档

http://www.cnblogs.com/Philoo/archive/2011/10/01/jeasyui_api_layout.html

posted @ 2014-08-20 15:01 半导体 阅读(241) | 评论 (0)编辑 收藏

仅列出标题
共27页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last