导航:首页 > 操作系统 > android设置画布的大小

android设置画布的大小

发布时间:2023-03-08 17:44:32

❶ 设计师如何为android应用标注尺寸

设计 Android 应用的最佳实践:
1. 画布大小定位 720 x 1280,72 dpi
2. 只使用偶数单位的尺寸,比如 96 px 的列表项高度,16 px 的边距,64 px 的图标边长
3. 只使用 24 pt,28 pt,36 pt 和 44 pt 的字体
4. 设计完成以后,所有尺寸的 px 值除以 2 作为 dp 数值交给工程师
5. 所有字体的 pt 值除以 2 作为 sp 数值交给工程师
6. 所有切图变成三份,分别是原始大小、缩小 1.5 倍,缩小 2 倍,分别作为 xhdpi,hdpi,mdpi 的资源交给工程师

如果你还有好奇心,可以继续往下看这个结论是怎么来的。
相信你已经看过这篇文档中关于 Android 中各种尺寸单位的介绍,没看过的最好看一下

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

在 Android 应用设计中涉及到的单位都是密度无关像素(Density-independent Pixels),这个说法太拗口了,通俗点讲,Android 应用设计中只用物理尺寸,类似厘米,英寸这种单位,不用像素。之所以这样,是由于像素在手机领域说不清楚问题,比方说规定列表项高度是 48 px,在 HTC C510e 上看起来就不错,但在三星 Galaxy SIII 上看起来就会非常矮,导致很难看,这是因为这两个机器的屏幕的 dpi 相差很大,前一个大约 160 dpi,后一个大约 320 dpi。这就是手机屏幕不同带来的问题,如果不考虑平板,不同主要是密度不同,而不是尺寸不同,也不是分辨率不同,给设计带来困扰的根本是屏幕密度不同。不幸的是,很少人对这个有概念,通常介绍手机,会说屏幕尺寸,3.5
寸还是 4 寸,会说分辨率,480 x 800 还是 720 x 1280,但通常不会介绍屏幕密度是多少。其实通过尺寸和分辨率可以算出密度来,dpi 的 定义是 dot per inch,即每英寸的像素点,把分辨率和尺寸除一除就能得到。一个不确切的分法是,720 x 1280 的手机很可能接近 320 dpi (Android 里的 xhdpi),480 x 800 的手机很可能接近 240 dpi (Android 里的 hdpi)。

Android 选择的单位是 dp 和 sp,dp 的定义是“在 160 dpi 的屏幕上,1 dp 大约等于 1 px”。这个说法也很拗口,简单点说,1 dp ≈ 1 / 160 inch,他就是物理界的一长度单位。用这个单位设计就统一了,比方说规定列表项高度是 48 dp,在所有手机上看起来都差不多是 48 / 160 inch 那么高,虽然在不同手机上它对应了不一样多的像素点,但这个转换是 Android 手机完成的,每个 Android 手机都得知道在我这 1 dp 对应多少像素。sp 也是同样解释,18
sp 的字在所有手机上看起来应该都差不多大(自己改了字体大小设置的除外)。看到这里,可能有人会想,那岂不是不同手机显示的内容不同。确实是这样,同样一个列表,在 A 手机上只能显示五行,但在 B 个手机上就能显示六行;还是这个列表,在 A 手机上文字左边的留白就显得没有 B 手机多。

铺陈完了,逐条解释开始的最佳实践。

设计师在设计的时候是用不了 dp 的,他不可能拖一个 48 x 48 dp 的框,不可能设置一个 8 dp 的边距,Photoshop 里全是 px。于是我们就只有挑一个特定密度的屏幕,在这个特定密度的屏幕上,dp 和 px 的关系是确定,把设计做了,再把 px 转换成 dp 给工程师。另外有一点是,长度可以乘除一下就解决,图片是不能除的,图片必须手动缩放。

我们挑哪一个密度好呢?答案是挑密度最大的,因为图片缩小比放大好,放大会失真,选 320 dpi 作为目标屏幕,为其他屏幕提供图片时,只需要缩小。而 320 dpi 屏幕的分辨率最常见的是 720 x 1280,以这个尺寸作为画布尺寸,是最带感的,这样的设计稿就和应用在最多数的 320 dpi 的机器上运行起来的样子一样。当然你可以选其他画布大小,但再大也不见得方便,这个大小也够施展了。72 dpi 是 Photoshop 的默认设置,不要改就好,这个数字和后面的换算有关系。

字体的问题,Android 4.0 以后的设计规范中建议只使用四种字号,分别是 12 sp,14 sp,18 sp 和 22 sp,这也是 Android framework 用到的全部字号。我们需要找到在这个画布上,这些字号和 pt 的对应关系,以及,px 和 dp 的对应关系。有两种算法

❷ android图像绘制——画布保存为图片

解释:

1、首先创建一个Bitmap图片,并指定大小;

2、在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可;

3、需要保存的目录File,注意如果写的目录如“/sdcard/akai/”如果不存在的话,要先创建(file.mkdirs()),否则FileOutputStream会报错No found;

4、需要添加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

什么是画布呢 其实通过字面意思的理解就是用来绘画的地方,那么android里的画布是神马样子的呢?

在自定义画布中常用到下面3个类

Canvas

这些绘图方法中的每一个都需要指定一个Paint对象来渲染它

Paint

Paint也称为"刷子",Paint可以指定如何将基本图形绘制到位图上。

Paint类相当于一个笔刷和调色板。它可以选择如何使用上面描述的draw方法来渲染绘 制在画布上的基本图形。通过修改Paint对象,可以在绘图的时候控制颜色、样式、字体和特殊效果。最简单地,setColor可以让你选择一个Paint的颜色,而Paint对象的样式(使用setStyle控制)则可以决定是绘制绘图对象的轮廓(STROKE),还是只填充每一部 分(FILL),或者是两者都做(STROKE_AND_FILL)除了这些简单的控制之外,Paint类还支持透明度,另外,它也可以通过使用各种各样的阴影、过滤器和效果进行修改,从而提供由更丰富的、复杂的画笔和颜料组成的调色板。

从继承View类(或其子类)开始,并定义onDraw()回调方法。系统会调用该方法来完 成View对象自己的绘制请求。这也是通过Canvas对象来执行所有的图形绘制调用的地方,这个Canvas对象是由onDraw()回调方法传入的。

Android框架只在必要的时候才会调用onDraw()方法,每次请求应用程序准备完成图形 绘制任务时,必须通过调用invalidate()方法让该View对象失效。这表明可以在该View 对象上进行图形绘制处理了,然后Android系统会调用该View对象的onDraw()方(尽 管不保证该回调方法会立即被调用)。

在定制的View组件的onDraw()方法内部,使用给定的Canvas对象来完成所有的图形绘制处理(如Canvas.draw…()方法或把该Canvas对象作为参数传递给其他类的draw() 方法)。一旦onDraw()方法被执行完成,Android框架就会使用这个Canvas对象来绘制一个有系统处理的Bitmap对象。

下面是Paint一些常用方法:

Bitmap

Bitmap绘图的表面也称位图(这里详细说哈位图的功能)。

从资源中获取位图:

通过Resource的函数:InputStream openRawResource(int id)获取得到资源文件的数据流后,可以通过2种方式获得bitmap

使用BitmapDrawable :

使用BitmapDrawable(InputStream is)构造一个BitmapDrawable;

使用BitmapDrawable类的getBitmap()获取得到位图;

使用BitmapFactory使用BitmapFactory类decodeStream(InputStream is)解码位 图资源,获取位图BitmapFactory的所有函数都是static,这个辅助类可以通过资 源ID、路径、文件、数据流等方式来获取位图。

获取位图的信息

一般获取位图信息包括:位图大小、透明度、颜色格式等等,这些信息呢可以通过 三-一方法获取得到Bitmap就迎刃而解了,Android SDK中对Bitmap有详细说明,大家可以去详细了解哈。

显示位图

显示位图需要使用核心类Canvas,可以直接通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas,下面的实例中会详细列举到

位图的缩放

位图的缩放,在Android SDK中提供了2种方法:

1:将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎 一样:
drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)

2:在原有位图的基础上,缩放原位图,创建一个新的位图:
createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)

位图旋转

位图的旋转,离不开Matrix。Android SDK提供了Matrix类,可以通过各种接口来设置 矩阵

android 处理图片工具

截取视频帧并转化为Bitmap

❸ android开发问题: 在Activity主界面绘制画布,可是它把整个窗口都覆盖掉了,怎么设定画布的窗口大小呢(

你是说View占满了整个屏幕吗?这样的话就只能在layout中写一个布局文件,将View以一种组件的方式声明到.xml文件中,然后你可以在它的上下中声明其他的button或者textview或者ImageButton等。

❹ Android画板怎么在画布放大的同时不改变画笔大小

三种方法:

第一种:把用ps打开图片然后选择菜单-图像(I)里面的画布大小

弹出裁切面板后如上图所示点击确定即可将画布变成和图片一样大小

❺ 手机版(安卓)medbang paint画布大小像素如何调

在新建的时候可以设定单位选择像素
对现有画板进行修改,可以双击画板工具,在对话框中进行修改。如果你默认单位不是像素也没关系,你输入像素值后跟着输入PX即可。输入后它会自动换算成默认的单位的数值,但仍然是按照你输入的像素值来改变画布的大小。

❻ 如何增加画布大小在Android的

您可以创建所需大小的位图,然后绘制它需要部分使用drawBitmap以帆布(位图位图,矩形SRC,矩形DST,油漆涂料)方法帆布。

❼ android中怎样实现对画布的缩放

  1. Canvas类提供了很多“画“的方法,先来建一个类,继承自View。让画布铺在View上而显示出来(这也是自定义UI组件的路子),源码如下:


❽ Android屏幕配适、版本配适与多语言支持

目前主流的屏幕密度:240dpi (480 * 800px) , 320dpi (720*1280px) , 480dpi(1080*1920px)现在新出的手机几乎全是全高清屏(1080*1920px)

Android图片资源目录

mdpi [1倍]160dpi

hdpi [1.5倍]   240dpi

xhdpi [2倍]   320dpi

xxhdpi [3倍] 480dpi

xxxhdpi [4倍] 640dpi

因此对其他图片资源的建议是:

a.一般采用720 * 1280的屏幕尺寸设计,这样切图可以直接适配720 * 1280的机型。

b.720 * 1280下切的图基本可以适配大部分机型。

d.适配480 * 800的机型,只需要把切图 * 0.75。

e.适配1080 * 1920 的机型,只需要把切图 * 1.50即可。

a.以720 * 1280作为设计标准,画布大小定位720 * 1280 (以后1080*1920px做标准亦可,类推)

b.只使用偶数单位的尺寸

c.尽量只使用 24pt, 28pt , 32pt, 44pt大小的字体

d.设计完成之后,所有尺寸的px值除以2作为dp数据交给开发人员

e.三份切图,分别是:xhdpi,hdpi,mdpi的资源,如果要切一份就使用xhdpi

栅格系统的最小单位是8dp,一切距离、尺寸都应该是8dp的整数倍,所有可操作元素最小点击区域尺寸为48dp X 48dp。以下是一些常见的尺寸与距离:

有时候在自定义view,draw的时候单位往往是px,要做一个dpi的转换,需要通过该类获取屏幕的信息,如:屏幕密度,宽高等。

a.尽量使用线性布局(LinearLayout)和相对布局(RelateLayout),尽量不使用绝对布局(AbsoluteLayout)和帧布局(FrameLayout)。

b.尽量使用wrap_content、mach_parent让view自适应或最大化,尽量不要写宽高的值。

c.使用线下布局的百分比weight权重时,要把能伸缩方向的宽度写成“0dp“,如果写成wrap_coent会使布局效果不佳等问题。

d.尽量使用android的Shape自定义view背景,这样会随之自适应。

e.ImageView的ScaleType有几种方式:matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY;尽量使用fitCenter按比例扩大至view宽度,能取得较好适配和显示效果。(更多请参考: Android中的ImageView配适 )

f.获取屏幕分辨率信息,进行动态适配。(参考第三大点)

a.把屏幕设置成单一的横屏或竖屏:

b.根据横竖屏加载不同布局(android: screenOrientation="sensor")

通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏,然后在onCreate方法中加载不同的布局

采用第二种方式要注意的有两点

布局问题:

需要在res目录先建立layout-land和layout-port目录相应的xml文件名字相同,然后在两个文件夹下创建相同名字的两套xml,系统就会根据不同的屏幕来进行自动寻找。

切换时activity的生命周期:

activity生命周期在切换横竖屏会有一些有趣的变化

a.不设置activity的android:configChanges时,切换横屏,activity的生命周期会重新调用一次,但是切换竖屏时,生命周期会重新调用两次。

b.当设置activity的android:configChanges=“orientation”时,切换横竖屏都会重新调用各生命周期一次。

c.当设置activity的android:configChanges=“orientation|keyboardHidden”(大于api13时,需要设为“orientation|screenSize”)时,切换横竖屏不会重新调用各生命周期,只会调用onConfigurationChanged方法。

一般设为b或者c

平板应用的特性:

对于大屏幕的平板8英寸以上(参考ipad mini,现在很多高端手机都是5-6英寸了,8英寸以上视为平板吧),基与平板应用的特性,平板应用开发一般采取如下两种策略

1)兼容模式

采用单activity(或者尽量少activity)+多fragment的结构开发应用,在layout资源文件中创建三套布局:手机布局、平板横屏布局、平板竖屏布局。

优点:

        只需要维护一个app

缺点:

        设计及实现的难度变大,更复杂,有时候需要采取折衷方案

        手机apk上由于含有平板的大分辨率图片资源(设计上可以减少内置资源)

2)开发另一套只适配平板的app

优点:

        与手机app分离独立。不会因为要兼容而采用一些折衷方案,影响其性能、内存

        设计和实现更加自由

缺点:

        需要维护两套app

目前谷歌推荐第一种方案,但是国内很多应用是采取第二种方案。

可以通过判断sdk的版本(Build.VERSION.SDK_INT),来为能够使用的版本进行个性化设置

例如:沉浸式状态栏配适

在Android系统4.4以前,状态栏的背景色和字体颜色都是不能改变的。但是4.4以后Google增加了改变状态栏背景透明的方法。可以通过判断sdk的版本,来为能够使用的版本进行个性化设置:

沉浸式状态栏是Android在5.0中引入的,在5.0之前是没有的,并且在Android6.0中沉浸式状态栏的使用方法和5.0不一样,因此需要做到版本兼容,针对于不同的Android进行适配,同样也是通过判断Build.VERSION.SDK_INT来区分版本,进行个性化配适

沉浸式状态栏的实现方式有好几种,更多请参考 沉浸式状态栏的实现

原则:内置图片资源不应该出现文字(如果出现文字需要具备)、所有的文字需要放在res资源目录特定语言目录下。

阅读全文

与android设置画布的大小相关的资料

热点内容
怎么初步认识编程 浏览:208
为什么程序员都喜欢谷歌 浏览:891
压缩性骨拆能自愈吗 浏览:277
安卓怎么设置游戏画面 浏览:114
k线上写字源码 浏览:457
单击按钮保存资料源码 浏览:354
华为gt加密卡 浏览:213
河北超融合服务器厂家云主机 浏览:894
芙儿优安全座椅app怎么连接 浏览:294
专业美团骑手app怎么开通 浏览:949
个人音乐分享网站源码 浏览:375
在新电脑上怎么注册加密狗 浏览:123
最后一战游戏源码 浏览:5
phpmysql实例下载 浏览:751
传智黑马安卓非加密 浏览:553
服务器如何配置host 浏览:1001
守望执行命令 浏览:371
加密狗插上去了怎么办 浏览:624
锤子m1怎么把文件夹重置 浏览:213
APP的数据会存在哪里 浏览:66