请问关于android适配的问题

gdutqiang 发布于 2016/08/26 01:06
阅读 533
收藏 0

请问,我想做个 手电筒app,如图1,当点击  “笑脸图 ” 的时候, 电筒就亮起来,当再次点击  “笑脸图”的时候,电筒就暗了。

 我是用  wrap_content 来表示 宽和高的。  

这个笑脸图我是放在  \res\drawable-hdpi  目录下的

请问  如果要做到可以适配不同的手机, 应该怎么处理呢?  

我网上查过,有的说要在\res\drawable-ldpi
                                            res\drawable-mdpi
                                            res\drawable-xhdpi
                                            res\drawable-xxhdpi  不同文件夹里边放不同大小的  笑脸图。

但是 究竟大小 应该怎么确定呢?  这样就能适配不同大小的手机了吗


麻烦知道的朋友,详细回复下怎么适配不同大小屏幕的手机,谢谢啦
     
layout 文件里边的 activity_main.xml  代码如下:
                                   
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    tools:context="com.example.luckylight.MainActivity" >

    <ImageButton
        android:id="@+id/btnOpenClose"
        android:background="@null"
        android:contentDescription="@null"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/btn_switch_on" />

</RelativeLayout>

更多0

加载中
0
黛曦葛溪
黛曦葛溪

使用res\drawable-mdpi文件夹的情况 并不能适配好所有的话机,android 话机分辨率千差万别,同样的分辨率物理尺寸也有的不一样,所以如果真的使用文件夹的方法可能就要定义很多很多,
 如:res\drawable-hdpi drawable-sw600dp-hdpi drawable-sw400dp-mdpi 等等,
真的要适配各种话机那不是要很多很多(幸好现在都在用的手机没有那种很小屏的了,13年当初小屏手机还存在的时候适配快要搞哭了)
不过适配搞了两个月还是没能彻底解决 小/中/大屏的适配,后来就用到了一个很好的方法,只用一套图,代码适配。 我是写了一个公共类,里面首先获取手机的分辨率,然后定义一个中间标准的分辨率作为参照(UI给图就要给你定义的那个分辨率的图)。
如:1024x800 获取当前手机的分辨率为800x480 那就得到一个缩放的比例值,然后将图片进行缩放到需要的宽高(android里有意个缩放图片的接口可以按小数点缩放的,自己搜一下吧)。
另外android有xml自己绘制图的方法, 例如:圆角/直角按钮,这些纯色或渐变色都可已绘制,这种情况使用自己代码绘制的使用都是很好适配的,
另外一般最好定义好宽高,创建类似values-sw600dp文件夹里面在dimens.xml定义宽高然后引用。
对于纯色的图不想自己xml绘制的让UI 切 .9图,直接放在drawable文件夹中,
宗上,如果想在layout 中控件宽高定义为wrap_content 那就在代码中进行图片按比列缩放的方法,然后将图片set 到控件中(优点是能较高的适配好各种手机,避免了一个apk 中放很多图片,缺点,代码中都要获取控件然后set,
代码量可能增多如:sendButton.setImageBitmap(BitmapUtil.getBitmap(R.drawable.hh)))
对于纯色的按钮这些最好使用类似values-sw600dp定义好宽高的方法,使用.9 或自己绘制图片适配。


g
gdutqiang
回复 @黛曦葛溪 : 谢谢您的回复,还想请问下,挺多android应用是有底部菜单的,但是我看到有的应用的 底部菜单是涉及 具体的高度的,那么 请问 底部菜单一般怎么做到适配呢? 麻烦再帮忙回复下,谢谢啦
黛曦葛溪
黛曦葛溪
回复 @gdutqiang : 不会的,分辨率小的图片放大会模糊,但是分辨率高的图片缩小是不会的,我当时是没发现有这问题。我用的是matrix.setScale(currentScale, currentScale, width, height);
g
gdutqiang
回复 @黛曦葛溪 : 谢谢您的回复,之前 您有提到 定义的是以1240X800为标准, 那么如果是需要缩小的图片的, 那么 就需要 按比例缩小图片了。 也就是 比如 把原来1240X800的图片 缩小到 320 X 320的图片, 那么这样缩小后, 缩小后的图片是否会变得模糊呢? 麻烦再帮忙回复下,谢谢啦
黛曦葛溪
黛曦葛溪
回复 @gdutqiang : ic_launcher 这个你还真得用创建文件夹的方法,或者你真的想使用动态图片处理,那就就在Application类中自己重新创建set应用图标的方法(我只是觉得应该可以这样,没试过你可以去搜一下动态设置应用图标)。不过创建文件夹的方法基本都能满足了吧。
黛曦葛溪
黛曦葛溪
回复 @gdutqiang : 看过,大部分是使用创建文件夹的方式,个人觉得现在的手机的话创建文件夹的方法应该能满足了。开源中国的我也看过,只是应用不一样,开源中国效果比较少,我们当时每个页面做的效果比较多,使用图片很多,而且13年的时候手机 大小中屏的都要求适配成功。分辨率在320x240 的都要满足,所以适配起来单创建文加夹的方法很难满足需求。
下一页
返回顶部
顶部