精华内容
下载资源
问答
  • 安卓界面适配

    2017-10-25 11:39:27
    开发的时候每次都要做适配的图片。有时实在是记不住drawable-h,l,m,xh,xxh这几种的最佳分辨率,所以在此记录下,以免每次去查找。先来说下一下几方面: 单位 多种屏幕分辨率规格 icon图标尺寸 操作栏图标 小图标 1:...

    开发的时候每次都要做适配的图片。有时实在是记不住drawable-h,l,m,xh,xxh这几种的最佳分辨率,所以在此记录下,以免每次去查找。

    先来说下一下几方面:

    • 单位
    • 多种屏幕分辨率规格
    • icon图标尺寸
    • 操作栏图标
    • 小图标

    1:单位

    • Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸

    -Aspect Ratio(宽高比率) 指的是实际的物理尺寸宽高比率,分为long和nolong Milestone是16:9,属于long

    -Resolution(分辨率) 和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数 Milestone是854*480

    -DPI(dot per inch) 每英寸像素数,如120dpi,160dpi等,假设QVGA(320*240)分辨率的
    屏幕物理尺寸是(2英寸*1.5英寸),dpi=160 可以反映屏幕的清晰度,用于缩放UI的

    -Density(密度) 屏幕里像素值浓度,resolution/Screen size可以反映出手机密度
    Density-independent pixel (dip) 指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160

    2:多种屏幕分辨率规格

    • ldpi 0.75倍(1dp=0.75px) (120dpi) 240*320px
    • mdpi 1倍(1dp=1px) (160dpi) 320*480px
    • hdpi 1.5倍(1dp=1.5px) (240dpi) 480*800px
    • xhdpi 2倍(1dp=2px) (320dpi) 720*1280px
    • xxhdpi 3倍(1dp=3px) (480dpi) 1080*1920px
    • xxxhdpi 4倍(120dpi)

    3:icon图标尺寸

    • mdpi 320*480 48*48px
    • hdpi 480*800 72*72px
    • xhdpi 720*1280 96*96px

    4:操作栏图标

    操作栏图标是app中用的最频繁的图标,一般大小为:32*32dp

    • 480*480 ppi=240 图标大小 dp:24 px:36 切图大小 dp:32 px:48
    • 720*1280 ppi=320 图标大小 dp:24 px:48切图大小 dp:32 px:64

    5:小图标

    特定状态下使用的图标。一般大小为:16*16dp

    • 480*480 ppi=240 图标大小 dp:12 px:18 切图大小 dp:16 px:24
    • 720*1280 ppi=320 图标大小 dp:16 px:24 切图大小 dp:16 px:32
    展开全文
  • 如何适配安卓界面

    2018-06-22 20:32:15
    在开发安卓的时候,很多时候要适配的图片,然而最佳分辨率却总是忘记。所以这里进行总结下。 先来说下一下几方面: 单位 多种屏幕分辨率规格 icon图标尺寸 操作栏图标 小图标 1:单位 Screen size...

    在开发安卓的时候,很多时候要适配的图片,然而最佳分辨率却总是忘记。所以这里进行总结下。

    先来说下一下几方面:

    单位

    多种屏幕分辨率规格

    icon图标尺寸

    操作栏图标

    小图标

    1:单位

    Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸
    -Aspect Ratio(宽高比率) 指的是实际的物理尺寸宽高比率,分为long和nolong Milestone是16:9,属于long

    -Resolution(分辨率) 和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数 Milestone是854*480

    -DPI(dot per inch) 每英寸像素数,如120dpi,160dpi等,假设QVGA(320*240)分辨率的
    屏幕物理尺寸是(2英寸*1.5英寸),dpi=160 可以反映屏幕的清晰度,用于缩放UI的

    -Density(密度) 屏幕里像素值浓度,resolution/Screen size可以反映出手机密度
    Density-independent pixel (dip) 指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160

    2:多种屏幕分辨率规格

    ldpi 0.75倍(1dp=0.75px) (120dpi) 240*320px
    mdpi 1倍(1dp=1px) (160dpi) 320*480px
    hdpi 1.5倍(1dp=1.5px) (240dpi) 480*800px
    xhdpi 2倍(1dp=2px) (320dpi) 720*1280px
    xxhdpi 3倍(1dp=3px) (480dpi) 1080*1920px
    xxxhdpi 4倍(120dpi)
    3:icon图标尺寸

    mdpi 320*480 48*48px
    hdpi 480*800 72*72px
    xhdpi 720*1280 96*96px
    4:操作栏图标

    操作栏图标是app中用的最频繁的图标,一般大小为:32*32dp

    480*480 ppi=240 图标大小 dp:24 px:36 切图大小 dp:32 px:48
    720*1280 ppi=320 图标大小 dp:24 px:48切图大小 dp:32 px:64

    5:小图标

    特定状态下使用的图标。一般大小为:16*16dp

    480*480 ppi=240 图标大小 dp:12 px:18 切图大小 dp:16 px:24
    720*1280 ppi=320 图标大小 dp:16 px:24 切图大小 dp:16 px:32

    这样以后就可以方便的直接看这篇博客了。

    展开全文
  • 今天呢,想要讲解一下关于安卓手机界面适配问题该如何去解决和避免。现在市面上面的安卓机各种各样的界面,但是界面还是有大部分的主流机型。现在很多的菜鸟们其实没有感受到真正的如何去适配界面,和如何去解决这...

                                                       今天呢,想要讲解一下关于安卓手机界面的适配问题该如何去解决和避免。现在市面上面的安卓机各种各样的界面,但是界面还是有大部分的主流机型。现在很多的菜鸟们其实没有感受到真正的如何去适配界面,和如何去解决这个问题。那么今天我就大概写一下关于这一方面的思路。其实呢,要完全解决适配问题其实很难的。不仅仅我们要对一个这些布局的理解。比如Relayout这个布局,linelayout这个布局这些布局进行一个大概的了解。这是必须的。比如对于Relayout这个布局而言是一个使用十分频繁的一个布局问题。但是这个布局却有局限性,它没办法做到百分百适配。也是网络上面一直说的安卓手机的面碎片化该怎么处理。比如这次新公司的一个项目。里面的碎片非常严重,可能只是适配几款特定的机型。但是对于现在市面上的安卓机来说主流是华为手机,三星,步步高智能机例如ViVo以及OPPO手机。那么相对于苹果机而言,苹果机的机型是相对比较少的,那么在苹果机的适配就会相对简单一点。说这么多,其实碎片化的引起的原因还是因为Relayout布局的问题。比如你设置一个控件距离左边10dp,那么假设你是在780*1080的屏幕上面设置的。那么你在比如ipa上面去再看可能就会造成很大问题。再比如,你在relayout上面设置好了,8个空格的控件,那么有可能 会出现好几种情况,比如界面的距离不够,或者界面的距离过长。那么这个时候就应该想办法去适配。那么这个时候使用什么方式比较适合呢?当然了我们也可以使用Relayout这个布局。但是里面的控件使用Gridview这个控件进行分装。 其实我们
    这个时候就可以想到一个问题,就是这个控件可以做到按比例划分界面。虽然会麻烦一点,但是这个方法将会改变很多的问题。其实很多布局不能说全部不适用Relayout这个布局。有些布局我们可以相对简单的布局,也不会影响到界面,这些就靠自己的经验去判断理解。
    那么在讲述一个linelayout这个布局。其实这个布局也非常实用,但是也非常的不实用。为什么这么说呢。这个布局其实呢,使用上面可能会麻烦,但是可以很好的解决适配问题。
    但是这个布局很难在复杂布局上面进行布局。不是不能哦~只是很麻烦。下一篇博客会写关于这一些为什么这个复杂不好。
    其实写了这么一些,其实主要要写一个理念。关于代码的理解。以及布局的理解。而不是简简单单的“布局”有些布局需要在代码里面进行设置。

    转载于:https://www.cnblogs.com/Foxwei/p/5639488.html

    展开全文
  • Android 安卓UI界面适配

    千次阅读 2018-11-01 12:22:06
    安卓机器有各种尺寸,UI界面逐个适配比较麻烦。 UI界面自动适配 示例:     示例完整源码:AndroidAutofit源码.zip 适配函数:AutoSize(View view, int w, int h, int DesignW, int DesignH) package ...

    安卓机器有各种尺寸,UI界面逐个适配比较麻烦。

    UI界面自动适配 示例:

               

     

    示例完整源码:AndroidAutofit源码.zip

    适配函数:AutoSize(View view, int w, int h, int DesignW, int DesignH)

    
    package sci.demo.androidautofit;
    
    import sci.tool.ActivityComponent;
    import android.os.Bundle;
    import android.widget.RelativeLayout;
    
    
    /** MsgPage.java:自适应尺寸信息显示界面示例 ----- 2018-11-1 上午10:07:54 scimence */
    public class MsgPage extends ActivityComponent
    {
    	/** 设置界面显示 */
    	@Override
    	public void Init(Bundle savedInstanceState)
    	{
    		this.setContentView("autofit_msg_page");
    		
    		RelativeLayout lPic = RelativeLayout("auto_msg_page_bg");	// 背景图布局Layout
    		setAutofitBackground(lPic, "autofit_msg_pic");				// 为view添加自适应尺寸的图像
    		
    		setAutofitBackground(RelativeLayout("autofit_msg_page_btn"), "autofit_msg_wait");	// 为按钮添加自适应尺寸的图像
    	}
    	
    	/** 设置View点击响应逻辑 */
    	@Override
    	public void Click(String viewId)
    	{
    		if (viewId.equals("auto_msg_page_bg") || viewId.equals("autofit_msg_page_btn"))	// 点击了按钮或者背景图时,关闭界面
    		{
    			this.finish();
    		}
    	}
    	
    }
    
    package sci.tool;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.RadioButton;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    import android.widget.ToggleButton;
    
    
    /** Componet.java: 创建Componet后可按控件字符串名称进行检索调用 ----- 2018-6-7 上午11:00:03 scimence */
    public abstract class ActivityComponent extends Activity
    {
    	/** 显示当前页面 */
    	public static void Show(Context context, Class<?> cls)
    	{
    		Intent intent = new Intent(context, cls);        	// 新的支付调用逻辑
    		
    		// intent.putExtra("appId", PackageName);
    		// intent.putExtra("uid", ClientId);
    		
    		context.startActivity(intent);
    	}
    	
    	/** 根据资源类型、名称,获取资源id */
    	public static int getId(Context context, String name, String defType)
    	{
    		return context.getResources().getIdentifier(name, defType, context.getPackageName());
    	}
    	
    	/** 根据资源id,获取资源名称 club.scimence.www.app_second:id/thumbsup_tittle_bg */
    	public String getResourceName(int resid)
    	{
    		if (resid == -1) return "";
    		return context.getResources().getResourceName(resid);
    	}
    	
    	/** 获取View对应的id字符串不含包名前缀,如:thumbsup_tittle_bg */
    	public String getViewId(View view)
    	{
    		int resId = view.getId();
    		String pageResName = getResourceName(resId);
    		// if(pageResName.startsWith("club.scimence")) pageResName = pageResName + "";
    		String packagePerfix = context.getPackageName() + ":id/";
    		
    		String Id = "";
    		if (pageResName.startsWith(packagePerfix)) Id = pageResName.substring(packagePerfix.length());
    		
    		return Id;
    	}
    	
    	/** 根据资源名称,获取Drawable */
    	@SuppressWarnings("deprecation")
    	public static Drawable getDrawable(Context context, String drawableName)
    	{
    		int id = getId(context, drawableName, "drawable");
    		// Drawable pic = context.getResources().getDrawable(id); 		// 从Resources直接获取图像尺寸会被修改
    		
    		InputStream in = context.getResources().openRawResource(id);	// 直接解析未处理过的图像资源保持原有尺寸
    		Bitmap bitmap = BitmapFactory.decodeStream(in);
    		BitmapDrawable pic = new BitmapDrawable(bitmap);
    		
    		return pic;
    	}
    	
    	Activity context;
    	OnClickListener clickListener;
    	
    	HashMap<String, View> Views = new HashMap<String, View>();
    	
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		context = this;
    		
    		Init(savedInstanceState);
    		setClickAble();
    	}
    	
    	/** 设置页面布局layout文件名称(不含后缀) */
    	public void setContentView(String layoutName)
    	{
    		int layoutId = ActivityComponent.getId(this, layoutName, "layout");     // 获取页面布局id
    		setContentView(layoutId);												// 设置布局
    	}
    	
    	/** 初始化子类界面 */
    	public abstract void Init(Bundle savedInstanceState);
    	
    	/** 为所有设置android:id="@+id/**"属性的View,添加点击处理逻辑对象 */
    	public void setClickAble()
    	{
    		// 点击响应处理逻辑
    		clickListener = new OnClickListener()
    		{
    			@Override
    			public void onClick(View v)
    			{
    				
    				// String key = getViewId(v);
    				// Click(key);
    				
    				// 从已存在的控件中进行检索
    				for (String key : Views.keySet())
    				{
    					if (Views.get(key) == v)
    					{
    						// if (listener0 != null) listener0.Click(key);
    						Click(key);
    					}
    				}
    			}
    		};
    		
    		// 设置可点击的按钮
    		List<View> list = Childs(this);
    		for (View V : list)
    		{
    			String key = getViewId(V);  // 获取View的Id名称
    			if (!key.equals(""))
    			{                           // 设置了android:id属性的View,为其添加点击响应
    				if (!Views.containsKey(key)) Views.put(key, V); // 记录View的Id属性
    				V.setOnClickListener(clickListener);
    			}
    		}
    	}
    	
    	/** 记录Id对应控件 */
    	public void AddView(String... Id)
    	{
    		for (String id : Id)
    		{
    			if (!id.equals("") && !Views.containsKey(id))
    			{
    				try
    				{
    					View view = context.findViewById(getId(context, id, "id"));
    					Views.put(id, view);
    					
    					view.setOnClickListener(clickListener);
    				}
    				catch (Exception ex)
    				{
    					ex.printStackTrace();
    				}
    			}
    		}
    	}
    	
    	/** 获取Id对应控件 */
    	public View GetView(String Id)
    	{
    		if (!Views.containsKey(Id)) AddView(Id);
    		return Views.get(Id);
    	}
    	
    	public TextView TextView(String Id)
    	{
    		return (TextView) GetView(Id);
    	}
    	
    	public EditText EditText(String Id)
    	{
    		return (EditText) GetView(Id);
    	}
    	
    	public Button Button(String Id)
    	{
    		return (Button) GetView(Id);
    	}
    	
    	public RadioButton RadioButton(String Id)
    	{
    		return (RadioButton) GetView(Id);
    	}
    	
    	public LinearLayout LinearLayout(String Id)
    	{
    		return (LinearLayout) GetView(Id);
    	}
    	
    	public RelativeLayout RelativeLayout(String Id)
    	{
    		return (RelativeLayout) GetView(Id);
    	}
    	
    	public ImageView ImageView(String Id)
    	{
    		return (ImageView) GetView(Id);
    	}
    	
    	public ToggleButton ToggleButton(String Id)
    	{
    		return (ToggleButton) GetView(Id);
    	}
    	
    	// /** View控件点击回调处理逻辑 */
    	// public abstract static interface ClickListener
    	// {
    	// public abstract void Click(String viewId);
    	// }
    	//
    	// public ClickListener listener = new ClickListener()
    	// {
    	// @Override
    	// public void Click(String viewId)
    	// {
    	// if (viewId.equals("thumbsup_close")) // 关闭界面按钮
    	// {
    	//
    	// }
    	// else if (viewId.equals("ltpay_text_unuseable"))
    	// {
    	//
    	// }
    	// }
    	// };
    	
    	/** 子类继承自此实现点击响应 */
    	public abstract void Click(String viewId);
    	
    	// -----------------
    	
    	/** 获取 activity中的所有view */
    	public static List<View> Childs(Activity act)
    	{
    		View activityRoot = act.getWindow().getDecorView();
    		List<View> list = Childs(activityRoot, false);
    		
    		return list;
    	}
    	
    	/** 获取当前View的所有子view */
    	public static List<View> Childs(View view, boolean ContainsThis)
    	{
    		List<View> viewList = new ArrayList<View>();
    		
    		if (!viewList.contains(view)) viewList.add(view);
    		if (view instanceof ViewGroup)
    		{
    			ViewGroup group = (ViewGroup) view;
    			for (int i = 0; i < group.getChildCount(); i++)
    			{
    				View child = group.getChildAt(i);
    				if (!viewList.contains(child)) viewList.add(child);
    				
    				// 添加child的子节点
    				List<View> subList = Childs(child, true);
    				for (View v : subList)
    				{
    					if (!viewList.contains(v)) viewList.addAll(subList);
    				}
    			}
    		}
    		
    		if (!ContainsThis) viewList.remove(view);
    		
    		return viewList;
    	}
    	
    
    	// --------------
    	// View尺寸自动适配
    
    	// 图像资源应与设计宽高匹配
    	public static int SCREEN_DESIGN_WIDTH = 720;	// 设计界面时,界面整体宽度
    	public static int SCREEN_DESIGN_HEIGHT = 1280;	// 设计界面时,界面整体高度
    	
    	/** 将View以Drawable相对于 DesignW,DesignH的比例显示 */
    	public static void AutoSize(View view, Drawable drawable, int DesignW, int DesignH)
    	{
    		Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
    		int w = bitmap.getWidth();
    		int h = bitmap.getHeight();
    		
    		AutoSize(view, w, h, DesignW, DesignH);
    	}
    	
    	
    	/** 将View以 w,h 相对于  DesignW,DesignH的比例显示。
    	 * 
    	 * 适配原理:1、先计算宽高在设计屏幕中的尺寸比例值;
    	 * 2、取占比值较大的宽度比例值,或占比值较大的高度比例值,为缩放比例值。
    	 * 3、按比例值缩放图像尺寸至待适配屏幕的最适尺寸
    	 *  */
    	public static void AutoSize(View view, int w, int h, int DesignW, int DesignH)
    	{
    		Context context = view.getContext();
    		DisplayMetrics dm = context.getResources().getDisplayMetrics();
    		int screenWidth = dm.widthPixels;
    		int screenHeight = dm.heightPixels;
    		
    		boolean portrait = (screenHeight > screenWidth);
    		
    		// 先计算宽高在设计屏幕中的尺寸比例值;
    		float skW = w / (float) (portrait ? DesignW : DesignH);
    		float skH = h / (float) (portrait ? DesignH : DesignW);
    		// float sk = skW > skH ? skW : skH; // 以宽高较大的比例值进行尺寸适配
    		
    		// 生成相对于屏幕的尺寸,以宽高较大比例值充满屏幕
    		int width = w, height = h;
    		if (skW >= skH)							// 宽度比例值大于高度比例值时,已宽度比例值为基准
    		{
    			width = (int) (skW * screenWidth);	// 按比例值,缩放至屏幕对应尺寸
    			height = (int) (width * h / w);		// 按原图像宽高比例,获取高度尺寸,图像不会拉伸变形
    		}
    		else									// 高度比例值大于宽度比例值时,已高度比例值为基准
    		{
    			height = (int) (skH * screenHeight);
    			width = (int) (height * w / h);
    		}
    		
    		// 设置显示尺寸
    		ViewGroup.LayoutParams params = view.getLayoutParams();
    		// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height);
    		params.width = width;
    		params.height = height;
    		view.setLayoutParams(params);
    	}
    	
    	/** 为viewt添加自动适配尺寸的背景图drawableName */
    	public static void setAutofitBackground(View view, String drawableName)
    	{
    		Drawable drawablePic = getDrawable(view.getContext(), drawableName);	// 从context获取drawableName对应的图像
    		view.setBackground(drawablePic);										// 为view添加背景图像		
    		
    		AutoSize(view, drawablePic, SCREEN_DESIGN_WIDTH, SCREEN_DESIGN_HEIGHT);	// 为view自动适配尺寸
    	}
    	// --------------
    	
    }
    
    

     

    展开全文
  • 安卓适配详解

    千次阅读 2018-01-01 01:41:48
    本文将详细介绍安卓界面适配过程,后期将会整理一些安卓性能,控件等方面在不同的手机和系统版本上的适配流程,希望对大家开发安卓有所帮助,由于网上很多关于一些dp,sp,px的概念资料,所以本文不进
  • 安卓语言适配

    2017-08-01 17:31:12
    最近接触到了语言适配的需求,所以分享个简单的demo介绍一下流程 demo示意: 流程: 1.新建不同的values...2.新建BaseActivity,所有涉及语言适配的Activity继承此基类(其他类型界面同理) public class BaseActivi
  • 安卓屏幕适配笔记

    2018-07-14 22:14:58
    密度=尺寸/分辨率,如果密度都一样了就不存在适配的问题了)目前的主流的就是720*1280 1920x1080 5英寸或者5.5英寸的智能安卓手机屏幕适配问题的本质使得“布局”、“布局组件”、“图片资源”、“用户界面流程”...
  • 安卓屏幕适配方案

    2019-10-28 10:16:08
    屏幕适配方案 ...前言 虽然去年写的一篇文章【一种非常好用的Android屏幕适配】就包含字体大小适配...有这样一个需求,界面上需要显示一个标题文本,但是该标题的文案长度是不固定的,要求标题的文案全部显示出来,不能...
  • 相信大家在开发移动端h5的时候,肯定会遇到类似下面这种需求: 那对于这种页面的布局来说就很简单了,整个上下排版,然后最...但是在安卓真机上去看到这样的现象: 第一感觉就是不美观,那么该如何解决这个...
  • 安卓布局适配的另一种姿势

    千次阅读 2016-11-24 12:56:59
    一:安卓布局适配一直都是安卓开发者比较头痛的问题,我们不仅需要考虑代码的质量,同时也需要面对数千品种的手机型号而考虑界面适配的工作;Android屏幕适配全攻略(最权威的官方适配指导) ...
  • 安卓屏幕适配详解

    2014-11-26 13:42:18
    不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做过一点安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家!...
  • 【问题1】iphone页面会自动把数字当成电话号码点击后自动跳到电话拨号界面 <meta name="format-detection" content="telephone=no" /> 【问题2】微信浏览器自动调整页面字体大小 方案*禁止微信浏览器调整页面...
  • 用户界面流程匹配不同屏幕尺寸 布局适配:使用相对布局,禁止用绝对布局;(相对布局的子控件使用相对位置方式排列,因为控件之间位置是相对位置,所以屏幕大小改变,控件之前的相对位置不会改变,相对浅谈布局更...
  • 菜鸟提问 应用程序主界面 BUTTON等组件的屏幕适配 不用解释图片的问题
  • 安卓原生UI适配

    2020-11-19 20:19:58
    本人是做安卓端SDK开发的,之前比较少接触到原生界面UI方面的开发,最近有个需求涉及到,在这里记一下,做原生UI需要留意的细节吧! 屏幕单位知识点的基础 dp是具有伸缩性的,相对px来说是更好的选择,这里面有个...
  • 移动端安卓适配

    2019-09-19 11:46:12
    • 常见苹果适配问题: • 【问题1】:iPhone页面会自动把数字当成电话号码,点击后自动跳到电话拨号界面 • 方案: <meta name="format-detection" content="telephone=no" /> • 常见苹果适配问题: • ...
  • 当我们使用图片做背景,智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形...
  • 移动端苹果安卓适配

    2019-09-19 16:31:44
    【问题1】:iPhone页面会自动把数字当成电话号码,点击后自动跳到电话拨号界面 方案: meta元标签常见苹果适配问题 【问题2】微信浏览器自动调整页面字体大小 方案:禁止微信浏览器调整页面字体大小 【问题3】用户...
  • 最近遇到一个手机适配问题,就是同样的一个app运行在安卓9.0手机上的显示和安卓其他设备上的颜色比较浅。 因为项目是通过TextureView来绘制界面图像的,所以我只能先去了解这个类相关的Api,试图通过更改Windows的...
  • 据美国科技媒体最新报道,谷歌将推出一个新的设计...起码对于搞安卓界面设计和安卓开发的小伙伴们来说,是一个无比的好消息。起码以后不用为了适配安卓的分辨率而烦恼,只需要做好一套标准的界面设计就行。前提是按...
  • 对于界面适配分Android和IOS两种系统处理。 对于IOS设备,由于数量有限,只要做到 960x640 1024x769 1136x640 (当时还没有iphone6呢) 三种适配即可,所以我们对这三种屏幕做了三种不同的界面配置文件。 对于...
  • 之前做游戏都是用公司自己的引擎,对于界面适配分Android和IOS两种系统处理。 对于IOS设备,由于数量有限,只要做到 960x640 1024x769 1136x640 (当时还没有iphone6呢) 三种适配即可,所以我们对这三种屏幕做了三...
  • 安卓刘海屏适配

    2019-03-20 10:11:09
    1.允许全屏界面内容显示到刘海区域配置: <!--允许绘制到oppo、vivo刘海屏机型的刘海区域--> <meta-data android:name="android.max_aspect" android:value="2.2"/> <!--允许绘制到华为刘海屏机型的...
  •  所以在做界面适配时需要将这些条件都考虑进去,为了能帮到大家提升开发效率,下面就给大家介绍了三种界面适配的方式,想学的可以看一看。  Unity4.6新版UGUI,提供了三种基本的界面适配方案。  首先添加一...
  • 我们是不是可以不用系统的键盘适配,自己做适配。我们只需要监听一下键盘的高度,在界面根节点添加ScroolView然后滚动内容不是就可以解决这个问题了先设置键盘兼容模式android:windowSoftInputMode="...
  • 安卓复习提纲

    2016-02-17 18:43:42
    基础部分 安卓中四大组件(4种)。 ...安卓中存储方式(5种)。...安卓界面适配。 安卓中多线程 安卓中图片处理。 安卓中网络通信。 安卓应用优化。 高级部分 安卓中NDK开发。 安卓中 SO文件。 Framework Linux 内核。

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

安卓界面适配