当前位置:  编程技术>移动开发
本页文章导读:
    ▪分辨率适配的步骤        分辨率适配的方法它解决了分辨率跟密集度的关系,但是也引来一个问题,就是布局会因为图片资源小而失真,所以这也需要美工的同志多多配合的,贴代码: 第一步,先创建一个view信息的.........
    ▪ 从文件读一个字符串 跟程序里的字符串对比 就是不对        从文件读一个字符串 和程序里的字符串对比 就是不对str = [[allLinedStrings objectAtIndex:i] stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]]; 应该对读出来的字符串进行如上处理1楼qiushi8883天前.........
    ▪ 诺基亚困守WP:流于平庸抑或消亡       诺基亚死守WP:流于平庸抑或消亡10月,诺基亚迎来一好一坏两条消息。     好消息发生在中旬,诺基亚最新款基于Windows phone 8系统的Lumia 920新机在欧洲多个国家推出预订,短短数天就已宣.........

[1]分辨率适配的步骤
    来源: 互联网  发布时间: 2014-02-18
分辨率适配的方法

它解决了分辨率跟密集度的关系,但是也引来一个问题,就是布局会因为图片资源小而失真,所以这也需要美工的同志多多配合的,贴代码:

第一步,先创建一个view信息的javabean类:



  • package com.zte.layout.adapter;

  • import android.view.View;

  • /**
  • * 存储View信息的JavaBean类

  • * @author 

  • */
  • public class LayoutInformation
  • {
  •         /**
  •          * View的对象
  •          */
  •         private View view;

  •         /**
  •          * View的宽度
  •          */
  •         private double viewWidth;

  •         /**
  •          * View的高度
  •          */
  •         private double viewHeight;

  •         /**
  •          * View距左边的距离,即marginLeft
  •          */
  •         private double viewMarginLeft;

  •         /**
  •          * View距顶部的距离,即MarginTop;
  •          */
  •         private double viewMarginTop;
  •         
  •         /**
  •          * 父类布局的类型为相对布局
  •          */
  •         public static int R=-1;
  •         
  •         /**
  •          * 父类布局的类型为线性布局
  •          */
  •         public static int L=-2;
  •         
  •         /**
  •          * 此View的父类布局的类型
  •          */
  •         private int parentLayoutType;

  •         /**
  •          * 存储View信息的JavaBean类
  •          * 
  •          * @param view
  •          *            View的对象
  •          * @param viewWidth
  •          *            View的宽
  •          * @param viewHeight
  •          *            View的高
  •          * @param viewMarginLeft
  •          *            View距左边的距离
  •          * @param viewMargdoubleop
  •          *            View距上部的距离
  •          * @param parentLayoutType
  •          *            父类布局的类型,LayoutInformation.R
  •          *            (表示相对布局)或者LayoutInformation.L(表示线性布局)
  •          */
  •         public LayoutInformation(View view, double viewWidth, double viewHeight,
  •                         double viewMarginLeft, double viewMarginTop, int parentLayoutType)
  •         {

  •                 this.view = view;
  •                 this.viewWidth = viewWidth;
  •                 this.viewHeight = viewHeight;
  •                 this.viewMarginLeft = viewMarginLeft;
  •                 this.viewMarginTop = viewMarginTop;
  •                 this.parentLayoutType=parentLayoutType;
  •         }

  •         /**
  •          * 获取View的对象
  •          * 
  •          * [url=home.php?mod=space&uid=7300]@return[/url] View对象
  •          */
  •         public View getView()
  •         {
  •                 return view;
  •         }

  •         /**
  •          * 设置View的对象
  •          */
  •         public void setView(View view)
  •         {
  •                 this.view = view;
  •         }

  •         /**
  •          * 获取View的宽度
  •          * 
  •          * @return View的宽度,double型
  •          */
  •         public double getViewWidth()
  •         {
  •                 return viewWidth;
  •         }

  •         /**
  •          * 设置View的宽度,double型
  •          * 
  •          * @param viewWidth
  •          */
  •         public void setViewWidth(double viewWidth)
  •         {
  •                 this.viewWidth = viewWidth;
  •         }

  •         /**
  •          * 获取View的高度
  •          * 
  •          * @return View的高度,double型
  •          */
  •         public double getViewHeight()
  •         {
  •                 return viewHeight;
  •         }

  •         /**
  •          * 设置View的高度,double型
  •          * 
  •          * @param viewHeight
  •          */
  •         public void setViewHeight(double viewHeight)
  •         {
  •                 this.viewHeight = viewHeight;
  •         }

  •         /**
  •          * 获取View距离左边的距离
  •          * 
  •          * @return View距离左边的距离,double型
  •          */
  •         public double getViewMarginLeft()
  •         {
  •                 return viewMarginLeft;
  •         }

  •         /**
  •          * 设置View距离左边的距离,double型
  •          * 
  •          * @param viewMarginLeft
  •          */
  •         public void setViewMarginLeft(double viewMarginLeft)
  •         {
  •                 this.viewMarginLeft = viewMarginLeft;
  •         }

  •         /**
  •          * 获取View距离上部的距离
  •          * 
  •          * @return View距离上部的距离,double型
  •          */
  •         public double getViewMarginTop()
  •         {
  •                 return viewMarginTop;
  •         }

  •         /**
  •          * 设置View距离上部的距离,double型
  •          * 
  •          * @param viewMargdoubleop
  •          */
  •         public void setViewMarginTop(double viewMarginTop)
  •         {
  •                 this.viewMarginTop = viewMarginTop;
  •         }
  •         
  •         /**
  •          * 获取父类布局的类型
  •          * @return parentLayoutType,int型
  •          */
  •         public int getParentLayoutType()
  •         {
  •                 return parentLayoutType;
  •         }

  •         /**
  •          * 设置父类布局的类型
  •          * @param parentLayoutType
  •          */
  •         public void setParentLayoutType(int parentLayoutType)
  •         {
  •                 this.parentLayoutType = parentLayoutType;
  •         }

  • }
  • package com.zte.layout.adapter;

  • import android.view.View;

  • /**
  • * 存储View信息的JavaBean类

  • * @author 

  • */
  • public class LayoutInformation
  • {
  •         /**
  •          * View的对象
  •          */
  •         private View view;

  •         /**
  •          * View的宽度
  •          */
  •         private double viewWidth;

  •         /**
  •          * View的高度
  •          */
  •         private double viewHeight;

  •         /**
  •          * View距左边的距离,即marginLeft
  •          */
  •         private double viewMarginLeft;

  •         /**
  •          * View距顶部的距离,即MarginTop;
  •          */
  •         private double viewMarginTop;
  •         
  •         /**
  •          * 父类布局的类型为相对布局
  •          */
  •         public static int R=-1;
  •         
  •         /**
  •          * 父类布局的类型为线性布局
  •          */
  •         public static int L=-2;
  •         
  •         /**
  •          * 此View的父类布局的类型
  •          */
  •         private int parentLayoutType;

  •         /**
  •          * 存储View信息的JavaBean类
  •          * 
  •          * @param view
  •          *            View的对象
  •          * @param viewWidth
  •          *            View的宽
  •          * @param viewHeight
  •          *            View的高
  •          * @param viewMarginLeft
  •          *            View距左边的距离
  •          * @param viewMargdoubleop
  •          *            View距上部的距离
  •          * @param parentLayoutType
  •          *            父类布局的类型,LayoutInformation.R
  •          *            (表示相对布局)或者LayoutInformation.L(表示线性布局)
  •          */
  •         public LayoutInformation(View view, double viewWidth, double viewHeight,
  •                         double viewMarginLeft, double viewMarginTop, int parentLayoutType)
  •         {

  •                 this.view = view;
  •                 this.viewWidth = viewWidth;
  •                 this.viewHeight = viewHeight;
  •                 this.viewMarginLeft = viewMarginLeft;
  •                 this.viewMarginTop = viewMarginTop;
  •                 this.parentLayoutType=parentLayoutType;
  •         }

  •         /**
  •          * 获取View的对象
  •          * 
  •          * [url=home.php?mod=space&uid=7300]@return[/url] View对象
  •          */
  •         public View getView()
  •         {
  •                 return view;
  •         }

  •         /**
  •          * 设置View的对象
  •          */
  •         public void setView(View view)
  •         {
  •                 this.view = view;
  •         }

  •         /**
  •          * 获取View的宽度
  •          * 
  •          * @return View的宽度,double型
  •          */
  •         public double getViewWidth()
  •         {
  •                 return viewWidth;
  •         }

  •         /**
  •          * 设置View的宽度,double型
  •          * 
  •          * @param viewWidth
  •          */
  •         public void setViewWidth(double viewWidth)
  •         {
  •                 this.viewWidth = viewWidth;
  •         }

  •         /**
  •          * 获取View的高度
  •          * 
  •          * @return View的高度,double型
  •          */
  •         public double getViewHeight()
  •         {
  •                 return viewHeight;
  •         }

  •         /**
  •          * 设置View的高度,double型
  •          * 
  •          * @param viewHeight
  •          */
  •         public void setViewHeight(double viewHeight)
  •         {
  •                 this.viewHeight = viewHeight;
  •         }

  •         /**
  •          * 获取View距离左边的距离
  •          * 
  •          * @return View距离左边的距离,double型
  •          */
  •         public double getViewMarginLeft()
  •         {
  •                 return viewMarginLeft;
  •         }

  •         /**
  •          * 设置View距离左边的距离,double型
  •          * 
  •          * @param viewMarginLeft
  •          */
  •         public void setViewMarginLeft(double viewMarginLeft)
  •         {
  •                 this.viewMarginLeft = viewMarginLeft;
  •         }

  •         /**
  •          * 获取View距离上部的距离
  •          * 
  •          * @return View距离上部的距离,double型
  •          */
  •         public double getViewMarginTop()
  •         {
  •                 return viewMarginTop;
  •         }

  •         /**
  •          * 设置View距离上部的距离,double型
  •          * 
  •          * @param viewMargdoubleop
  •          */
  •         public void setViewMarginTop(double viewMarginTop)
  •         {
  •                 this.viewMarginTop = viewMarginTop;
  •         }
  •         
  •         /**
  •          * 获取父类布局的类型
  •          * @return parentLayoutType,int型
  •          */
  •         public int getParentLayoutType()
  •         {
  •                 return parentLayoutType;
  •         }

  •         /**
  •          * 设置父类布局的类型
  •          * @param parentLayoutType
  •          */
  •         public void setParentLayoutType(int parentLayoutType)
  •         {
  •                 this.parentLayoutType = parentLayoutType;
  •         }

  • }

  • 第二步:创建一个计算方法:

  • import java.util.List;

  • import android.app.Activity;
  • import android.content.Context;
  • import android.util.DisplayMetrics;
  • import android.view.View;
  • import android.view.ViewGroup.LayoutParams;
  • import android.widget.LinearLayout;
  • import android.widget.RelativeLayout;

  • /**
  • * 分配率通配类

  • * @author 

  • */
  • public class MyLayoutAdapter
  • {
  •         /**
  •          * 基准分辨率的宽
  •          */
  •         public double STANDARD_SCREEN_WIDTH;

  •         /**
  •          * 基准分辨率的高
  •          */
  •         public double STANDARD_SCREEN_HEIGHT;

  •         /**
  •          * 系统当前的分辨率的宽
  •          */
  •         public double CURRENT_SCREEN_WIDTH;

  •         /**
  •          * 系统当前的分辨率的高
  •          */
  •         public double CURRENT_SCREEN_HEIGHT;

  •         /**
  •          * 基准屏幕密度
  •          */
  •         public static final double STANDARD_DENSITY = 160;

  •         /**
  •          * 当前屏幕密度
  •          */
  •         private double CURRENT_DENSITY;

  •         /**
  •          * 屏幕密度比例
  •          */
  •         private double DENSITY_RATIO;

  •         /**
  •          * 屏幕宽度比例
  •          */
  •         private double WIDTH_RATIO;

  •         /**
  •          * 屏幕高度比例
  •          */
  •         private double HEIGHT_RATIO;

  •         /**
  •          * 组件基准的宽度
  •          */
  •         private double viewStandardWidth;

  •         /**
  •          * 组件基准的高度
  •          */
  •         private double viewStandardHeight;

  •         /**
  •          * 组件基准的距离左边的距离
  •          */
  •         private double viewStandardMarginLeft;

  •         /**
  •          * 组件基准的距离顶部的距离
  •          */
  •         private double viewStandardMarginTop;

  •         /**
  •          * 组件当前的宽
  •          */
  •         private double viewCurrentWidth;

  •         /**
  •          * 组件当前的高
  •          */
  •         private double viewCurrentHeight;

  •         /**
  •          * 组件当前距离左边的距离
  •          */
  •         private double viewCurrentMarginLeft;

  •         /**
  •          * 组件当前距离顶部的距离
  •          */
  •         private double viewCurrentMarginTop;

  •         /**
  •          * UI组件的对象
  •          */
  •         private View view;

  •         /**
  •          * 此View的父类布局的类型
  •          */
  •         private int parentLayoutType;

  •         /**
  •          * 父类布局的类型为相对布局
  •          */
  •         private final int LAYOUT_TYPE_RELATiVELAYOUT = LayoutInformation.R;

  •         /**
  •          * 父类布局的类型为线性布局
  •          */
  •         private final int LAYOUT_TYPE_LINEARLAYOUT = LayoutInformation.L;

  •         /**
  •          * 布局属性为wrap_content
  •          */
  •         private final int LAYOUTPARAMS_WARP_CONTENT = LayoutParams.WRAP_CONTENT;

  •         /**
  •          * 布局属性为fill_parent
  •          */
  •         private final int LAYOUTPARAMS_FILL_PARENT = LayoutParams.FILL_PARENT;

  •         private Context context;

  •         /**
  •          * 类对象实例化时,设置 基准屏幕宽度,高度
  •          * 
  •          * @param context
  •          *            Context
  •          * @param standardWidth
  •          *            基准屏幕的宽
  •          * @param standardHeight
  •          *            基准屏幕的高
  •          */
  •         public MyLayoutAdapter(Context context, double standardWidth,
  •                         double standardHeight)
  •         {
  •                 this.context = context;
  •                 getScreenSize();
  •                 STANDARD_SCREEN_HEIGHT = standardHeight;
  •                 STANDARD_SCREEN_WIDTH = standardWidth;
  •                 // 计算宽高比率
  •                 WIDTH_RATIO = CURRENT_SCREEN_WIDTH / STANDARD_SCREEN_WIDTH;
  •                 HEIGHT_RATIO = CURRENT_SCREEN_HEIGHT / STANDARD_SCREEN_HEIGHT;
  •         }

  •         /**
  •          * 获取当前屏幕大小和密度
  •          */
  •         private void getScreenSize()
  •         {
  •                 DisplayMetrics displayMetrics = new DisplayMetrics();
  •                 ((Activity) context).getWindowManager().getDefaultDisplay()
  •                                 .getMetrics(displayMetrics);
  •                 CURRENT_SCREEN_WIDTH = displayMetrics.widthPixels;
  •                 CURRENT_SCREEN_HEIGHT = displayMetrics.heightPixels;
  •                 CURRENT_DENSITY = displayMetrics.densityDpi;
  •                 DENSITY_RATIO = STANDARD_DENSITY / CURRENT_DENSITY;
  •         }

  •         /**
  •          * 进行通配
  •          * 
  •          * @param listdata
  •          */
  •         public void setViewLayout(List<LayoutInformation> listdata)
  •         {

  •                 for (int i = 0; i < listdata.size(); i++)
  •                 {

  •                         view = listdata.get(i).getView();

  •                         viewStandardWidth = listdata.get(i).getViewWidth();

  •                         viewStandardHeight = listdata.get(i).getViewHeight();

  •                         viewStandardMarginLeft = listdata.get(i).getViewMarginLeft();

  •                         viewStandardMarginTop = listdata.get(i).getViewMarginTop();

  •                         setLayoutParams();

  •                         viewCurrentMarginLeft = viewStandardMarginLeft * WIDTH_RATIO;

  •                         viewCurrentMarginTop = viewStandardMarginTop * HEIGHT_RATIO;

  •                         parentLayoutType = listdata.get(i).getParentLayoutType();
  •                         setLayoutByParentLayoutType();
  •                 }
  •         }

  •         /**
  •          * 判断布局属性的值,设置布局的属性
  •          */
  •         private void setLayoutParams()
  •         {
  •                 // 如果基准的宽是wrap_content或者fill_parent则使用原值,否则进行计算得到通配后的值
  •                 if (viewStandardWidth == LAYOUTPARAMS_WARP_CONTENT
  •                                 || viewStandardWidth == LAYOUTPARAMS_FILL_PARENT)
  •                 {
  •                         viewCurrentWidth = viewStandardWidth;
  •                 } else
  •                 {
  •                         viewCurrentWidth = viewStandardWidth * WIDTH_RATIO;
  •                 }

  •                 // 如果基准的宽是wrap_content或者fill_parent则使用原值,否则进行计算得到通配后的值
  •                 if (viewStandardHeight == LAYOUTPARAMS_WARP_CONTENT
  •                                 || viewStandardHeight == LAYOUTPARAMS_FILL_PARENT)
  •                 {
  •                         viewCurrentHeight = viewStandardHeight;
  •                 } else
  •                 {
  •                         viewCurrentHeight = viewStandardHeight * HEIGHT_RATIO;
  •                 }
  •         }

  •         /**
  •          * 通过判断此View父类的布局类型,给此View设置布局
  •          */
  •         private void setLayoutByParentLayoutType()
  •         {

  •                 if (parentLayoutType == LAYOUT_TYPE_RELATiVELAYOUT)
  •                 {

  •                         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
  •                                         (int) viewCurrentWidth, (int) viewCurrentHeight);

  •                         params.setMargins((int) viewCurrentMarginLeft,
  •                                         (int) viewCurrentMarginTop, 0, 0);

  •                         view.setLayoutParams(params);

  •                 } else if (parentLayoutType == LAYOUT_TYPE_LINEARLAYOUT)
  •                 {

  •                         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
  •                                         (int) viewCurrentWidth, (int) viewCurrentHeight);
  •                         params.setMargins((int) viewCurrentMarginLeft,
  •                                         (int) viewCurrentMarginTop, 0, 0);
  •                         view.setLayoutParams(params);
  •                 }
  •         }

  •         /**
  •          * 设置字体大小
  •          * 
  •          * @param standardSize
  •          *            原始大小
  •          * @return int
  •          */
  •         public int setTextSize(int standardSize)
  •         {
  •                 int currentSize;

  •                 currentSize = (int) (standardSize * WIDTH_RATIO * DENSITY_RATIO);

  •                 return currentSize;
  •         }
  • }
  • 复制代码
    第三步,写一个接口:

  • public interface InitAllView{
  •         /**
  •          * 初始化控件的大小
  •          */
  •         public void initAllView();

  • }
  • 复制代码
    第四步:代码控制:

  • /**
  •          * 通配方法
  •          */
  •         private void initWildcard() {
  •                 myLayout = new MyLayoutAdapter(this, 320, 480);
  •                 listInfo = new ArrayList<LayoutInformation>();
  •                 listInfo.add(new LayoutInformation(mBtn1, LayoutParams.WRAP_CONTENT,
  •                                 LayoutParams.WRAP_CONTENT, 0, 0, LayoutInformation.R));
  •                 listInfo.add(new LayoutInformation(mNowRegisterBtn, 80, 27.3, 14.7, 0,
  •                                 LayoutInformation.R));
  •                 listInfo.add(new LayoutInformation(mNextRegisterBtn, 80, 27.3, 14.7, 0,
  •                                 LayoutInformation.R));

  •                 // listInfo.add(new LayoutInformation(mCheckBtn, 17.3,17.3, 14.7, 0,
  •                 // LayoutInformation.L));
  •                 mBtn1.setTextSize(myLayout.setTextSize(12));
  •                 mNowRegisterBtn.setTextSize(myLayout.setTextSize(12));
  •                 mNextRegisterBtn.setTextSize(myLayout.setTextSize(12));
  •                 myLayout.setViewLayout(listInfo);
  •         }
  • 复制代码
    效果对比如下:
    小的图片是通过适应过的,大的图片是没有做适配的。可以看得出来他们的差异很明显。如果各位大婶有什么新的方法,希望多多推荐,小弟也可以多学习几种。




    效果图.jpg (6.01 KB, 下载次数: 11)

    效果对比


  • package com.zte.layout.adapter;

  • import android.view.View;

  • /**
  • * 存储View信息的JavaBean类

  • * @author 

  • */
  • public class LayoutInformation
  • {
  •         /**
  •          * View的对象
  •          */
  •         private View view;

  •         /**
  •          * View的宽度
  •          */
  •         private double viewWidth;

  •         /**
  •          * View的高度
  •          */
  •         private double viewHeight;

  •         /**
  •          * View距左边的距离,即marginLeft
  •          */
  •         private double viewMarginLeft;

  •         /**
  •          * View距顶部的距离,即MarginTop;
  •          */
  •         private double viewMarginTop;
  •         
  •         /**
  •          * 父类布局的类型为相对布局
  •          */
  •         public static int R=-1;
  •         
  •         /**
  •          * 父类布局的类型为线性布局
  •          */
  •         public static int L=-2;
  •         
  •         /**
  •          * 此View的父类布局的类型
  •          */
  •         private int parentLayoutType;

  •         /**
  •          * 存储View信息的JavaBean类
  •          * 
  •          * @param view
  •          *            View的对象
  •          * @param viewWidth
  •          *            View的宽
  •          * @param viewHeight
  •          *            View的高
  •          * @param viewMarginLeft
  •          *            View距左边的距离
  •          * @param viewMargdoubleop
  •          *            View距上部的距离
  •          * @param parentLayoutType
  •          *            父类布局的类型,LayoutInformation.R
  •          *            (表示相对布局)或者LayoutInformation.L(表示线性布局)
  •          */
  •         public LayoutInformation(View view, double viewWidth, double viewHeight,
  •                         double viewMarginLeft, double viewMarginTop, int parentLayoutType)
  •         {

  •                 this.view = view;
  •                 this.viewWidth = viewWidth;
  •                 this.viewHeight = viewHeight;
  •                 this.viewMarginLeft = viewMarginLeft;
  •                 this.viewMarginTop = viewMarginTop;
  •                 this.parentLayoutType=parentLayoutType;
  •         }

  •         /**
  •          * 获取View的对象
  •          * 
  •          * [url=home.php?mod=space&uid=7300]@return[/url] View对象
  •          */
  •         public View getView()
  •         {
  •                 return view;
  •         }

  •         /**
  •          * 设置View的对象
  •          */
  •         public void setView(View view)
  •         {
  •                 this.view = view;
  •         }

  •         /**
  •          * 获取View的宽度
  •          * 
  •          * @return View的宽度,double型
  •          */
  •         public double getViewWidth()
  •         {
  •                 return viewWidth;
  •         }

  •         /**
  •          * 设置View的宽度,double型
  •          * 
  •          * @param viewWidth
  •          */
  •         public void setViewWidth(double viewWidth)
  •         {
  •                 this.viewWidth = viewWidth;
  •         }

  •         /**
  •          * 获取View的高度
  •          * 
  •          * @return View的高度,double型
  •          */
  •         public double getViewHeight()
  •         {
  •                 return viewHeight;
  •         }

  •         /**
  •          * 设置View的高度,double型
  •          * 
  •          * @param viewHeight
  •          */
  •         public void setViewHeight(double viewHeight)
  •         {
  •                 this.viewHeight = viewHeight;
  •         }

  •         /**
  •          * 获取View距离左边的距离
  •          * 
  •          * @return View距离左边的距离,double型
  •          */
  •         public double getViewMarginLeft()
  •         {
  •                 return viewMarginLeft;
  •         }

  •         /**
  •          * 设置View距离左边的距离,double型
  •          * 
  •          * @param viewMarginLeft
  •          */
  •         public void setViewMarginLeft(double viewMarginLeft)
  •         {
  •                 this.viewMarginLeft = viewMarginLeft;
  •         }

  •         /**
  •          * 获取View距离上部的距离
  •          * 
  •          * @return View距离上部的距离,double型
  •          */
  •         public double getViewMarginTop()
  •         {
  •                 return viewMarginTop;
  •         }

  •         /**
  •          * 设置View距离上部的距离,double型
  •          * 
  •          * @param viewMargdoubleop
  •          */
  •         public void setViewMarginTop(double viewMarginTop)
  •         {
  •                 this.viewMarginTop = viewMarginTop;
  •         }
  •         
  •         /**
  •          * 获取父类布局的类型
  •          * @return parentLayoutType,int型
  •          */
  •         public int getParentLayoutType()
  •         {
  •                 return parentLayoutType;
  •         }

  •         /**
  •          * 设置父类布局的类型
  •          * @param parentLayoutType
  •          */
  •         public void setParentLayoutType(int parentLayoutType)
  •         {
  •                 this.parentLayoutType = parentLayoutType;
  •         }

  • }

  •     
    [2] 从文件读一个字符串 跟程序里的字符串对比 就是不对
        来源: 互联网  发布时间: 2014-02-18
    从文件读一个字符串 和程序里的字符串对比 就是不对

    str = [[allLinedStrings objectAtIndex:i] stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];

    应该对读出来的字符串进行如上处理

    1楼qiushi8883天前 14:14换行的问题Re: carmazhao前天 18:33回复qiushi888n哦!你的意思是说读出来的字符串里面有换行符吧 哈哈 多谢提醒了 之前我竟然困窘了好久~

        
    [3] 诺基亚困守WP:流于平庸抑或消亡
        来源: 互联网  发布时间: 2014-02-18
    诺基亚死守WP:流于平庸抑或消亡

    10月,诺基亚迎来一好一坏两条消息。

        好消息发生在中旬,诺基亚最新款基于Windows phone 8系统的Lumia 920新机在欧洲多个国家推出预订,短短数天就已宣布“售罄”,用户交纳100欧元就预定一部售价为599.9欧元(折合人民币4900元)的Lumia 920,高端机如此受追捧,似乎让诺基亚重拾久违的市场信心。

        然而好景不长,IDC月末的一份报告犹如一盆冷水把诺基亚浇的透心凉。IDC表示尽管诺基亚仍是全球第二大手机厂商,然而在7月至9月当季,全球五大智能手机厂商已没了诺基亚的身影,在三星苹果占据半壁江山的的智能机领域,诺基亚几乎失声。

        对诺基亚而言,借助微软脆弱不堪的WP操作系统“药方”,能让其治愈后重返智能手机赛场希望愈加渺茫,更像是病急乱投医导致病入膏肓,回天乏术。

        押注微软 一地鸡毛

        当苹果在2007年推出iPhone,谷歌推出Android系统后,短短两三年时间,称霸全球手机市场长达14年的诺基亚就兵败如山倒,市占率急剧萎缩,Symbian系统几近死亡,销售额及市场份额大幅萎缩,全球多处工厂被迫关闭、大举裁员,在多个证券交易市场退市,信用评级降至了垃圾级。

        内忧外患之际,诺基亚一直在寻求出路。去年2月诺基亚用Windows Phone操作系统替代其自主开发的Symbian和MeeGo,CEO史蒂芬。埃洛普将微软看作是其逆转乾坤的机会,并将其形容为新产品催化器。

        然而8个月之后,推出首款Windows Phone手机却无法打动消费者。今年第三季度,Lumia销量从上季度的400万部大跌至290万部。

        再看看同期三星和苹果的成绩:三星Galaxy SIII上市半年销量突破3000万,NOTE II上市40天销量破300万,而iPhone 5在面市首周全球销量就已突破500万。

        “我能经得住多大诋毁,就能担得起多少赞美”。诺基亚当年的广告词似乎再也无法说服现在的自己:WP智能机一季度销量只相当苹果半周,三星半个月的成绩。

        Strategy Analytics分析师Neil Mawston表示,诺基亚在微软身上下了重注,是个高风险战略,其将所有的鸡蛋放在了微软的篮子里,如果这把没赌赢,那么损失将很高。

        然而微软并没有把所有鸡蛋都放在诺基亚身上,三星、HTC、中兴、华为、联想等越来越多得厂商都成为微软的押注的对象,就连微软也不愿只充当操作系统角色,已经有消息传出微软正与零部件供应商测试自家surface智能手机。

        诺基亚在WP智能机的糟糕表现,导致其借微软实现“全面复兴”的希望正在一点点破灭,一厢情愿押注的鸡蛋也被微软无情打翻,扬起一地鸡毛。

        微软的“棋子”或“弃子”

        IDC预测今年全球智能手机销量将达7亿部,其中Android机占据近75%份额,iOS为14.9%,WP为2%.虽然电信运营商和零售商、以及用户都乐于看到更多第三方操作系统出现,然而智能机操作系统的多极化远未形成,如同当年的美苏争霸,iOS和Android代表的两极格局在短期内难以撼动。

        今年7月,微软发布Windows Phone 8操作系统,所有WP7.5手机均无法升级WP8.看似对所以厂商都一视同仁,但诺基亚仿佛才是最大“受害者”,其刚刚推出的旗舰机Lumia900瞬间成为无法再升级的“功能机”,股价瞬间暴跌8%,也引发了“诺基亚生死存亡”等一连串雪崩反应。

        微软看似不顾及诺基亚情,实质上是微软要走自己的路,希望有更多的手机厂商支持WP系统,更多的开发者在WP平台推出移动应用,从而让WP阵营进一步做强做大,能与苹果、谷歌三足鼎立。

        而对那些长期在Android平台耕耘的手机厂商,选择与微软合作则更多的是在试错,诸如三星,HTC,华为等手机大厂现有的营收、利润绝大部分来自Android系统,不可能也不会像诺基亚把全部赌注押在微软身上。

        他们游走在Android和WP之间,只是为寻求二者博弈后的利益最大化,只是一种市场策略,而非战略。

        至于诺基亚,已经没有多少选择余地,一厢情愿的跟随微软,却只充当微软WP战略的一部分,表现好才能成为棋子,否则只是“弃子”。

        互联网资深分析人士洪波认为,微软看似拥有庞大的Windows资源作为胜出武器,但在该平台开发的应用体验极其糟糕,已经丧失与苹果谷歌竞争的优势,所谓的资源已经没有多少用户离不了的东西,而推出的多款WP智能机被市场冷遇源于其表现过于平庸,缺乏能让用户眼前一亮的感觉。

        据了解,时下Android阵营和苹果争相以大屏幕,低价格、拍照像素,操作系统,多核处理器等为卖点取悦用户。而反观WP智能机,居高不下售价与平淡无奇的配置、少的可怜的移动应用,似乎只能打动极少数的发烧友用户。

        诺基亚流于平庸 还是死亡

        诺基亚当年拒绝拥抱Android,毅然投身尚处于萌芽状态的WP阵营让业界不解。其CEO埃洛普认为Android平台不能让诺基亚从Navteq等服务投资中获得回报,而且也不利于诺基亚与其它厂商区分开来。

        而借助微软WP7,诺基亚和微软都都迫切需要在iOS和Android之外的第三大系统中展示自己的创新、差异和特色服务,比如微软Bing、广告和Office,诺基亚则有地图和导航。

        然而从1年多的市场表现来看,微软和诺基亚自以为是的“创新和特色服务”,在苹果和谷歌面前一败涂地,WP糟糕的成绩辜负了埃洛普当初的厚望,也让诺基亚元气大伤,抉择的代价过于沉重。

        有观点认为,WP市场仍待进一步培育,相关产业链仍需进一步完善,微软的主导作用仍需改进,然而这一切都需要时间,而在高速发展,变幻莫测的移动互联网时代,没人知道这个过程会持续多久。

        资料显示,诺基亚在全球智能手机市场所占份额,已从一年前的14%下滑至4%左右。倘若为了权宜之计投身android阵营,而在三星成为绝对霸主的背景下,MOTO、HTC、索尼都还在苦苦挣扎,惨淡经营,留给诺基亚的机会还有多少?

        诺基亚此前倚重的Symbian功能机已属于过去时,虽然时下的出货量仍居大头,但遭市场淘汰只是时间问题,智能机时代已成为不归路。

        时间留给诺基亚似乎只有两条路可选,一是继续死守WP,与重多手机厂商一道促成WP市场有朝一日的大爆发,从而成功实现逆袭。

        另外一条是在WP,Android,Symbian等平台全线开花,把鸡蛋放在多个篮子里,在多元化布局中寻求更多突破的可能性。

        倘若上述任何一项假设成立,诺基亚都将流于平庸与恶俗,而不会是下一个苹果。

        值得一提的是,诺基亚还有多少时间可供等待和抉择?


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3