对于Android游戏开发我们不得不像iPhone那样思考兼容Android平板电脑,对于苹果要考虑iPad、iPhone 3GS和iPhone 4等屏幕之间的兼容性,对于几乎所有的分辨率Android123总结了大约超过20中粉笔阿女郎的大小和对应关系,对于开发Android游戏而言可以 考虑到未来的3.0以及很多平板电脑的需要。

  常规的我们可能只考虑QVGA,HVGA,WVGA,FWVGA和DVGA,但是抛去了手机不谈,可能平板使用类似 WSVGA的1024x576以及WXGA的1280x768等等。

QVGA = 320 * 240;
WQVGA = 320 * 480;
WQVGA2 = 400 * 240;
WQVGA3 = 432 * 240;
HVGA = 480 * 320;
VGA = 640 * 480;
WVGA = 800 * 480;
WVGA2 = 768 * 480;
FWVGA = 854 * 480;
DVGA = 960 * 640;
PAL = 576 * 520;
NTSC = 486 * 440;
SVGA = 800 * 600;
WSVGA = 1024 * 576;
XGA = 1024 * 768;
XGAPLUS = 1152 * 864;
HD720 = 1280 * 720;
WXGA = 1280 * 768;
WXGA2 = 1280 * 800;
WXGA3 = 1280 * 854;
SXGA = 1280 * 1024;
WXGA4 = 1366 * 768;
SXGAMINUS = 1280 * 960;
SXGAPLUS = 1400 * 1050;
WXGAPLUS = 1440 * 900;
HD900 = 1600 * 900;
WSXGA = 1600 * 1024;
WSXGAPLUS = 1680 * 1050;
UXGA = 1600 * 1200;
HD1080 = 1920 * 1080;
QWXGA = 2048 * 1152;
WUXGA = 1920 * 1200;
TXGA = 1920 * 1400;
QXGA = 2048 * 1536;
WQHD = 2560 * 1440;
WQXGA = 2560 * 1600;
QSXGA = 2560 * 2048;
QSXGAPLUS = 2800 * 2100;
WQSXGA = 3200 * 2048;
QUXGA = 3200 * 2400;
QFHD = 3840 * 2160;
WQUXGA = 3840 * 2400;
HD4K = 4096 * 2304;
HXGA = 4096 * 3072;
WHXGA = 5120 * 3200;
HSXGA = 5120 * 4096;
WHSXGA = 6400 * 4096;
HUXGA = 6400 * 4800;
SHV = 7680 * 4320;
WHUXGA = 7680 * 4800;

  对于Android游戏中适应高分辨率的平板而言,资源可以考虑一个强制的绝对布局保证全屏显示,而手机上的多种分辨率使用相对布局更为合理些。

现今的主流手机各类及分辨率:

 

==== 320x480 ====
1. 三星 S5830 Galaxy Ace
2. 索尼爱立信 X8 (E15i)
3. 华为 U8500 
4. Motorola XT502 
5. LG P503
6. 酷派 D530
7. LG GT540
8. 夏普 SH8118U
9. 天语 W606 (估计运行困难)
10. 中兴 R750
11. 华为 U8500-HiQQ (估计运行困难)
12. 酷派 W711(估计运行困难)
13. 首派 A60
14. 三星I7500
15. HTC G6 Legend
16. Motorola ME600
17. Motorola CLIQ
18. 三星 I5700
19. HTC Aria (G9)
20. LG GW620
21. 华为 C8600
22. Motorola ME501
23. LG P500


==== 480x800 ====
1. HTC Desire (G7)
2. HTC A9191 
3. 三星 I9003 
4. 联想W101 乐phone (1.6系统非原生)
5. 夏普 SH8128 
6. 三星 I9088
7. 中兴 V880
8. 三星 I909
9. Motorola A1680
10. 联想W100 乐phone(1.6)
11. 联想C101  
12. 酷派 N930
13. 三星 I9088
14. HTC 双擎T9199
15. HTC A9191
16. 中兴 V9E
17. 三星I909 (SPhone)
18. 酷派 N930
19. 华为 U8800
20. HTC Desire HD (G10)
21. 三星 I9010
22. 夏普 SH7218U(新机)
23. Google Nexus One (G5)
24. Google Nexus S
25. 三星I9000
26. 三星T959
27. 三星W899
28. HTC Incredible S (S710e)
29. HTC Desire Z
30. HTC EVO 4G
31. 戴尔Mini5 (Streak)
32. 三星I9020
33. 戴尔Venue 

==== 640x960 ====
1. 魅族 M9

==== 480x854 ====
1. Motorola XT702
2. Motorola XT711
3. Motorola ME722 (里程碑2)
4. Motorola XT800
5. Motorola ME811 (Droid X)
6. Motorola ME525
7. Motorola XT800+ 
8. 索尼爱立信 X10i
9. Motorola XT806Ix


==== 320x240 ====
1. SAMSUNG S5570
2. HTC A3366 Wildfire
3. Motorola ME511 
4. Motorola XT301 
5. 华为 C8500
6. HTC A3380 
7. 三星 I5508
8. HTC A3360
9. 中兴 X850
10. Motoroal XT300
11. 索尼爱立信 U201

==== 600x1024 ====
1. 三星 Galaxy P1000

posted @ 2011-08-18 11:48 ganzhijie 阅读(3037) 评论(0) 编辑

该应用程序是基于Android平台针对意甲的一些信息查询:
主要功能:
    1.获取意甲最新新闻,包括各个强队和顶级球星的最新新闻;
    2.实时更新的意甲射手榜,意甲数据,积分榜和各轮赛程;
    3.关于意甲的精彩图片;

软件截图:

软件下载:

可以在Google Market,应用汇,机锋市场,安卓市场或优亿市场中搜索“我爱意甲”来下载;

posted @ 2010-09-11 23:50 ganzhijie 阅读(63) 评论(0) 编辑

该应用程序是基于Android平台针对西甲的一些信息查询:
主要功能:
    1.获取西甲最新新闻,包括各个强队和顶级球星的最新新闻;
    2.实时更新的西甲射手榜,西甲数据,积分榜和各轮赛程;
    3.关于西甲的精彩图片;

软件截图:

软件下载:

可以在Google Market,应用汇,机锋市场,安卓市场或优亿市场中搜索“我爱西甲”来下载;

posted @ 2010-09-11 23:48 ganzhijie 阅读(33) 评论(0) 编辑

该应用程序是基于Android平台针对英超的一些信息查询:
主要功能:
    1.获取英超最新新闻,包括各个强队和顶级球星的最新新闻;
    2.实时更新的英超射手榜,英超数据,积分榜,各轮赛程和本轮赛程赛果;
    3.关于英超的精彩图片;

软件截图:

软件下载:

可以在Google Market,应用汇,机锋市场,安卓市场或优亿市场中搜索“我爱英超”来下载;

posted @ 2010-09-11 23:46 ganzhijie 阅读(28) 评论(0) 编辑

在OPhone编程中有时候需要对图片做特殊的处理,比如将图片做出黑白的,或者老照片的效果,有时候还要对图片进行变换,以拉伸,扭曲等等。这些效果在OPhone中有很好的支持,通过颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)可以完美的做出上面的所说的效果,下面将分别介绍这两个矩阵的用法和相关的函数。

 
颜色矩阵
OPhone中可以通过颜色矩阵(ColorMatrix类)方面的操作颜色,颜色矩阵是一个5x4 的矩阵(如图1.1),可以用来方面的修改图片中RGBA各分量的值,颜色矩阵以一维数组的方式存储如下:
 [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]
他通过RGBA四个通道来直接操作对应颜色,如果会使用Photoshop就会知道有时处理图片通过控制RGBA各颜色通道来做出特殊的效果。这个矩阵对颜色的作用计算方式如1.3示:
 
 
 
矩阵的运算规则是矩阵A的一行乘以矩阵C的一列作为矩阵R的一行,C矩阵是图片中包含的ARGB信息,R矩阵是用颜色矩阵应用于C之后的新的颜色分量,运算结果如下:
 
R' = a*R + b*G + c*B + d*A + e;
G' = f*R + g*G + h*B + i*A + j;
B' = k*R + l*G + m*B + n*A + o;
A' = p*R + q*G + r*B + s*A + t;
 
颜色矩阵并不是看上去那么深奥,其实需要使用的参数很少,而且很有规律第一行决定红色第二行决定绿色,第三行决定蓝色,第四行决定了透明度,第五列是颜色的偏移量。下面是一个实际中使用的颜色矩阵。
 
如果把这个矩阵作用于各颜色分量的话,R=A*C,计算后会发现,各个颜色分量实际上没有任何的改变(R'=R G'=G B'=B A'=A)。
 
图1.5所示矩阵计算后会发现红色分量增加100,绿色分量增加100,这样的效果就是图片偏黄,因为红色和绿色混合后得到黄色,黄色增加了100,图片当然就偏黄了。
 
改变各颜色分量不仅可以通过修改第5列的颜色偏移量也可如上面矩阵所示将对应的颜色值乘以一个倍数,直接放大。上图1.6是将绿色分量乘以2变为原来的2倍。相信读者至此已经明白了如何通过颜色矩阵来改变各颜色分量。下面编写一段代码来,通过调整颜色矩阵来获得不同的颜色效果,JavaCode如下:
CMatrix类:
public class CMatrix extends Activity {
   
    private Button change;
    private EditText [] et=new EditText[20];
    private float []carray=new float[20];
    private MyImage sv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
       change=(Button)findViewById(R.id.set);
       sv=(MyImage)findViewById(R.id.MyImage);
   
       for(int i=0;i<20;i++){
         
       et[i]=(EditText)findViewById(R.id.indexa+i);
       carray[i]=Float.valueOf(et[i].getText().toString());
       }
       
       change.setOnClickListener(l);
    }
   
    private Button.OnClickListener l=new Button.OnClickListener(){
 
       @Override
       public void onClick(View arg0) {
           // TODO Auto-generated method stub
           getValues();
           sv.setValues(carray);
           sv.invalidate();
       }
       
    };
    public   void getValues(){
        for(int i=0;i<20;i++){
           
            carray[i]=Float.valueOf(et[i].getText().toString());
        }
       
    }
 
}
MyImage类继承自View类:
public class MyImage extends View {
    private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    private Bitmap mBitmap;
    private float [] array=new float[20];
   
    private float mAngle;
   
    public MyImage(Context context,AttributeSet attrs) {
        super(context,attrs);
       
        mBitmap    = BitmapFactory.decodeResource(context.getResources(),
                                               R.drawable.test);
        invalidate();
    }
  
   
    public void setValues(float [] a){
        for(int i=0;i<20;i++){
           array[i]=a[i];
        }
       
    }
   
    @Override protected void onDraw(Canvas canvas) {
        Paint paint = mPaint;
           
        paint.setColorFilter(null);
        canvas.drawBitmap(mBitmap, 0, 0, paint);
       
        ColorMatrix cm = new ColorMatrix();
       //设置颜色矩阵
       cm.set(array);
//颜色滤镜,将颜色矩阵应用于图片
        paint.setColorFilter(new ColorMatrixColorFilter(cm));
//绘图
        canvas.drawBitmap(mBitmap, 0, 0, paint);
        Log.i("CMatrix", "--------->onDraw");
      
    }
  
}
 
CMatrix类主要负责接收颜色矩阵的设置和重绘,没有要说的。MyImage类中进行绘图工作,首先设置颜色矩阵cm.set(..)从一维数组中读取数据20个数据给颜色矩阵赋值,paint.setColorFilter(..)设置颜色滤镜,然后绘图,效果就出来了(这个过程和PS差不多)如下:
   
 
 
 
    
 
 
 
 
  
看到这里,相信大家对颜色矩阵的作用已经有了一个直观的感受,现在也可以尝试做一个照片特效的软件。但是各种效果并不能让用户手动调节颜色矩阵,这里需要计算公式,由于本人并不是做图形软件的也不能提供,可以参考这个链接:
 
 
坐标变换矩阵
坐标变换矩阵是一个3*3的矩阵如图2.1,用来对图形进行坐标变化,将原来的坐标点转移到新的坐标点,因为一个图片是有点阵和每一点上的颜色信息组成的,所以对坐标的变换,就是对每一点进行搬移形成新的图片。具体的说图形的放大缩小,移动,旋转,透视,扭曲这些效果都可以用此矩阵来完成。
 
这个矩阵的作用是对坐标x,y进行变换计算结果如下:
x'=a*x+b*y+c
y'=d*x+e*y+f
通常情况下g=h=0,这样使1=0*x+0*y+1恒成立。和颜色矩阵一样,坐标变换矩阵真正使用的参数很少也很有规律。
        
上图就是一个坐标变换矩阵的简单例子,计算后发现x'=x+50,y'=y+50.可见图片的每一点都在x和y方向上平移到了(50,50)点处,这种效果就是平移效果,将图片转移到了(50,50)处。
 
 
计算上面得矩阵x'=2*x,y‘=2*y.经过颜色矩阵和上面转移效果学习,相信读者可以明白这个矩阵的作用了,这个矩阵对图片进行了放大,具体的说是放大了二倍。
下面将介绍几种常用的变换矩阵:
 
1.      旋转
 
 
2.      缩放
 
 
变换后长宽分别放大x'=scale*x;y'=scale*y.
 
3.         切变
 
 
4.         反射
 
 
( , )单位向量
 
 
5.         正投影
 
 
( , )单位向量
 
上面的各种效果也可以叠加在一起,既矩阵的组合变换,可以用矩阵乘法实现之,如:R=B(A*C)=(B*A)C,注意一点就是B*A和A*B一般是不等的。下面将编一个小程序,通过控制坐标变换矩阵来达到控制图形的目的,JavaCode如下:
CooMatrix类:
 
public class CooMatrix extends Activity {
   
    private Button change;
    private EditText [] et=new EditText[9];
    private float []carray=new float[9];
    private MyImage sv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
       change=(Button)findViewById(R.id.set);
       sv=(MyImage)findViewById(R.id.MyImage);
     
       for(int i=0;i<9;i++){
         
       et[i]=(EditText)findViewById(R.id.indexa+i);
       carray[i]=Float.valueOf(et[i].getText().toString());
      
       }
      change.setOnClickListener(l);
     
    }
   
    private Button.OnClickListener l=new Button.OnClickListener(){
 
       @Override
       public void onClick(View arg0) {
           // TODO Auto-generated method stub
           getValues();
           sv.setValues(carray);
           sv.invalidate();
       }
       
    };

    public   void getValues(){
        for(int i=0;i<9;i++){
           
            carray[i]=Float.valueOf(et[i].getText().toString());
        }
       
    }
 
   
}
MyImage类继承自View类:
public class MyImage extends View {
    private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    private Bitmap mBitmap;
    private float [] array=new float[9];
   

    public MyImage(Context context,AttributeSet attrs) {
        super(context,attrs);
        mBitmap = BitmapFactory.decodeResource(context.getResources(),
                                               R.drawable.ic_launcher_android);
        invalidate();
    }
  
   
    public void setValues(float [] a){
        for(int i=0;i<9;i++){
           array[i]=a[i];
        }
       
    }
   
    @Override protected void onDraw(Canvas canvas) {
        Paint paint = mPaint;
        canvas.drawBitmap(mBitmap, 0, 0, paint);
        //new 一个坐标变换矩阵
        Matrix cm = new Matrix();
//为坐标变换矩阵设置响应的值
       cm.setValues(array);
//按照坐标变换矩阵的描述绘图
        canvas.drawBitmap(mBitmap, cm, paint);
        Log.i("CMatrix", "--------->onDraw");

    }
  
}
 
上面的代码中类CooMatrix用于接收用户输入的坐标变换矩阵参数,类MyImage接收参数,通过setValues()设置矩阵参数,然后Canvas调用drawBitmap绘图。效果如下:
        
 
 
 
      
 
      
 
 
 
上面给出了用坐标变换矩阵做出的各种效果,用坐标变换矩阵可以方面的调节图形的各种效果,但是我们看看Matrix类就可以发现,实际上,matrix类本身已经提供了许多类似的方法,我们只要调用,就可以了。
 
 
上面的函数提供了基本的变换平移,放大,旋转,斜切。为了做出更复杂的变换,同时不必亲手去改动坐标变换矩阵,Matrix类提供了许多Map方法,将原图形映射到目标点构成新的图形,下面简述setPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount) 的用法,希望起到举一反三的作用。参数src和dst是分别存储了原图像的点和和指定的目标点的一维数组,数组中存储的坐标格式如下:
 [x0, y0, x1, y1, x2,y2,...]
 
这个个函数将src中的坐标映射到dst中的坐标,实现图像的变换。具体的例子可以参考APIDemos里的PolyToPoly,我在这里就不再贴代码了,只讲一下函数是怎么变换图片的。下面是效果:
 
 
图中写1的是原图,写有2,3,4的是变换后的图形。现在分析2是怎么变换来的,变换的原坐标点和目的坐标点如下:
src=new float[] { 32, 32, 64, 32 }
dst=new float[] { 32, 32, 64, 48 }
 
 
 
从上图标示出的坐标看出原图的(32,32)映射到原图的(32,32),(64,32)映射到原图(64,48)这样的效果是图像放大了而且发生了旋转。这样的过程相当于(32,32)点不动,然后拉住图形(64,32)点并拉到(64,48)点处,这样图形必然会被拉伸放大并且发生旋转。最后用一个平移将图形移动到右边现在的位置。希望能够好好理解这一过程,下面的3,4图是同样的道理。Matrix还有许多类似的Map方法可以做出许多效果。详细可以参考Matrix类下的方法。
 
posted @ 2010-09-07 19:19 ganzhijie 阅读(328) 评论(0) 编辑

Android中提供了判断手势的接口,所有我们可以根据提供的API来实现各种各样的手势功能来提高手机应用的用户体验。

下面是我写的一段小Demo:

GestureActivity.java

 

public class GestureActivity extends Activity {
   
    private GestureDetector gestureDetector;
    private Screen screen;

 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gestureDetector = new GestureDetector(this,onGestureListener);
        //得到屏幕的大小
        screen = GestureUtils.getScreenPix(this);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }
   
    GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener(){

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            float x = e2.getX() - e1.getX();
            float y = e2.getY() - e1.getY();
            //限制必须得划过屏幕的1/3才能算划过
            float x_limit = screen.widthPixels / 3;
            float y_limit = screen.heightPixels / 3;
            float x_abs = Math.abs(x);
            float y_abs = Math.abs(y);
            if(x_abs >= y_abs){
                //gesture left or right
                if(x > x_limit || x < -x_limit){
                    if(x>0){
                        //right
                        show("right");
                    }else if(x<0){
                        //left
                        show("left");
                    }
                }
            }else{
                //gesture down or up
                if(y > y_limit || y < -y_limit){
                    if(y>0){
                        //down
                        show("down");
                    }else if(y<0){
                        //up
                        show("up");
                    }
                }
            }
            return true;
        }
       
    };
   
    private void show(String value){
        Toast.makeText(this, value, Toast.LENGTH_SHORT).show();
    }

   
}

 

GestureUtils.java

 

public class GestureUtils {

 

    //获取屏幕的大小
    public static Screen getScreenPix(Context context) {
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay().getMetrics(dm);
        return new Screen(dm.widthPixels,dm.heightPixels);
    }
   
    public static class Screen{
       
        public int widthPixels;
        public int heightPixels;
       
        public Screen(){
           
        }
       
        public Screen(int widthPixels,int heightPixels){
            this.widthPixels=widthPixels;
            this.heightPixels=heightPixels;
        }

        @Override
        public String toString() {
            return "("+widthPixels+","+heightPixels+")";
        }
       
    }
   
}

posted @ 2010-09-02 15:59 ganzhijie 阅读(1083) 评论(0) 编辑

John F. Kennedy-“Ask not what your twitter can do for you, ask what you can do for your twitter.”
肯尼迪总统-“不要问你的微博能为你做些什么,问一下你自己能为微博做些什么?”

(原文:”Ask not what your country can do for you; ask what you can do for your country.“不要问你国家能为你做些什么而问你能为你国家做些什么。)

William Shakespeare -“There is nothing either good or bad but twittering makes it so.”
莎士比亚-“事物本身无所谓好坏之分,只是看你如何围脖它了。”

(原文:”There is nothing either good or bad, but thinking makes it so “事物本身无所谓好坏之分,只是人们的主观认知使然。)

Confucious -“Men’s natures are alike; it is their twitters that separate them.”
孔子-“性相近也,微博相远也”

(原文:”Men’s natures are alike, it is their habits that carry them farapart.“性相近也,习相远也.——文言文注解:人生下来的时候都是好的,只是由于成长过程中,后天的学习环境不一样,性情也就有了好与坏的差别。)

Alexander Pope -“To err is human, to twitter is divine.”

“会犯错是人,但会织围脖就是圣贤了。”——亚历山大波普(1688年5月21日- 1744年5月30日)是18世纪英国诗人。

(原文:”To Err Is Human, To Forgive Divine”会犯错是人,但会原谅别人过错就是圣贤了。)

Bill Gates -“140 characters ought to be enough for anybody.”

比尔盖茨-“140字应该对谁都足够啦。”

(原文:”640K ought to be enough for anybody.” 640kb的速度应该对谁都足够啦。)

Benjamin Franklin -“Mankind naturally and generally loved to be retweeted.”

本杰明·富兰克林-”人类天生就是喜欢被围脖转发。”

(原文:”Mankind naturally and generally love to be flattered.”人类天生就是喜欢被奉承。)

Franklin Delano Roosevelt -“The only thing to twitter about is twittering itself.”

罗斯福美国总统-“只有一个东西应该被围脖,那就是‘织围脖’本身。”

(原文:”Only Thing We Have to Fear Is Fear Itself”只有一个东西应该被恐惧,那就是恐惧本身。)

Dr. Victor Hugo Lindlahr -“You are what you tweet”

“从你的微博可以看出你是一个怎样的人。”——维克多雨果林德拉尔博士是美国健康食品和减肥的先驱。

(原文:”You Are What You Eat”从你吃的食物可以看出你是一个怎样的人?)

Mark Twain -“Twitter is mankind’s greatest blessing.”

马克吐温哦——“微博是人类得到最好的恩赐。”

(英文原文:”Humor is mankind’s greatest blessing.“幽默是人类得到最好的恩赐。)

Vincent Van Gogh -“I twitter my painting, and then I paint my twitter.”

文森特梵高——“我围脖我的画,然后我画我的微博。”

(原文:”I dream of painting and then I paint my dream.”我梦见我的画,然后我画我的梦。)

Rene Descartes -“I tweet, therefore I am”

哲学家笛卡尔-“我围脖,故我在。”

(原文:I Think, Therefore I Am 我思故我在。)

Martin Luther King, Jr.—”I have a dream that my four littlechildren will one day live in a nation where theywill not be judged bythe color of their skin, but by the content of their twitter.”

马丁路德金——“我梦想有一天,我的四个孩子将在一个不是以他们的肤色,而是以他们的微博内容来评判他们的国度里生活。”

Barack Obama–”Twitter,we need it!”

总统奥巴马——“我们需要微博。”

(原文:” Change,we need it!”我们需要改革!)

(原文:”I have a dream that my four little children will one day livein a nation where theywill not be judged by the color of their skin,but by the content of their character.”我梦想有一天,我的四个孩子将在一个不是以他们的肤色,而是以他们的品格优劣来评判他们的国度里生活。)

后记:奥巴马和马丁路德金这一条为eyeera原创(当然我们对马丁路德金这个伟人非常的敬畏!),其他参考资料来自http://www.gadgetcage.com。本文中的中文和英文原文都是由eyeera.com整理编译,哈哈,欢迎转载,麻烦您注明一下出处,呵呵,谢谢!【爱心】

posted @ 2010-09-02 10:11 ganzhijie 阅读(132) 评论(0) 编辑

Android的官方开发者博客发了一份幻灯片,介绍了一些Android UI设计的小贴士,Roger在这里以看图说话的形式发出来,有兴趣的读者就继续往下翻吧。整个PPT共分5个部分,Part I 翻译的是前两个部分。

Android UI秘笈:谨记该做什么不该做什么

Android UI秘笈:谨记该做什么不该做什么

作为开发者,为啥我们要关心UI,前面的一堆通通可以忽略掉,直接跳到最后一条。因为好的UI设计可以帮助我们卖出更多拷贝,赚到更多钱^_^

Android UI秘笈:谨记该做什么不该做什么

这个PPT 包含5个部分:

1>该做什么,不该做什么

2>设计哲学和考量

3>你必须了解的 UI 框架特性

4>新的UI 设计模式

5>图标和准则

Android UI秘笈:谨记该做什么不该做什么

Android UI秘笈:谨记该做什么不该做什么

Don’t:

1>不要照搬你在其它平台的UI设计,应该让用户感觉是在真正使用一个 Android 软件,在你的商标显示和平台整体观感之间做好平衡

2>不要过度使用模态对话框

3>不要使用固定的绝对定位的布局

4>不要使用px单位,使用dp或者为文本使用sp

5> 不要使用太小的字体

Android UI秘笈:谨记该做什么不该做什么

Android UI秘笈:谨记该做什么不该做什么

Do:

1> 为高分辨率的屏幕创建资源(缩小总比放大好)

2> 需要点击的元素要够大

3> 图标设计遵循 Android 的准则

4> 使用适当的间距(margins, padding)

5> 支持D-pad和trackball导航

6> 正确管理活动(activity)堆栈

7> 正确处理屏幕方向变化

8> 使用主题/样式,尺寸和颜色资源来减少多余的值

9>和视觉交互设计师合作!!!

Android UI秘笈:谨记该做什么不该做什么

Android UI秘笈:谨记该做什么不该做什么

设计哲学:

1> 干净而不过于简单

2> 关注内容而非修饰

3> 保存一致,让用户容易投入其中,可附加少许变化

4> 使用云端服务(存储和同步用户资料)来加强用户体验

Android UI秘笈:谨记该做什么不该做什么

优秀界面的设计准则:

1> 关注用户

2> 显示正确的内容

3> 给予用户适当的回馈

4> 有章可循的行为模式

5> 容忍错误

Android UI秘笈:谨记该做什么不该做什么

关注用户:

1> 了解你的用户(年龄,技能,文化,对你的应用的需求,使用的设备,何时何地如何使用设备)

2> ‘用户优先’的设计心态 (用户通常是任务导向的行为模式)

3> 更早,更频繁的由真实用户来测试

Android UI秘笈:谨记该做什么不该做什么

显示正确的内容:

1> 最常用的操作需要最快被用户看到并且可用

2> 不太常用的功能可以放到菜单里面

Android UI秘笈:谨记该做什么不该做什么

给予用户适当的回馈:

1> 交互式的UI元素最少需要反映出4种不同的状态 (default,disabled,focused,pressed)

2> 保证操作的结果是清晰可见的

3> 多给予用户进度提示,但是不要干扰他们当前的操作

Android UI秘笈:谨记该做什么不该做什么

Android UI秘笈:谨记该做什么不该做什么

有章可循的行为模式:

1> 行为模式遵循用户的期望(正确的操作活动堆栈,显示用户期望看到的信息和动作)

2> 使用合适的方式来加强功能可见性(可点击的元素就应该看起来是可以点击的)

3> 如果用户完成一项任务需要复杂的操作,重新思考你的设计!!!

Android UI秘笈:谨记该做什么不该做什么

容忍错误:

1> 只允许有意义的操作(适当禁用一些按钮)

2> 尽量减少不可回退的操作

3> 允许回退(undo)比使用确定对话框更好(实际上,应该尽量少用确定对话框,它对用户是一种干扰)

Android UI秘笈:谨记该做什么不该做什么

如果错误是可能发生的,那它就一定会发生。

Android UI秘笈:谨记该做什么不该做什么

设计考量:

1>屏幕的物理尺寸

2>屏幕密度

3> 屏幕的方向(竖向和横向)

4>主要的UI交互方式(触屏还是使用D-pad/trackball)

5>软键盘还是物理键盘

6>了解不同设备之间的相异之处是非常重要的!

7>阅读CDD,学习设备可能差异的地方

8>了解屏幕尺寸和密度分类

Android UI秘笈:谨记该做什么不该做什么

posted @ 2010-09-01 13:11 ganzhijie 阅读(233) 评论(0) 编辑
摘要: 程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下:android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在 checkin数据库中,改值可以修改上传( Allows read/write access to the “properti...阅读全文
posted @ 2010-08-21 23:18 ganzhijie 阅读(5330) 评论(0) 编辑
摘要: By Ron Hamelin from Android Police |译校 : @matrining 转载请注明 ifanr.com 译文链接   在苹果的 iPhone 与 Google 的 Android 系统手机在 2007突入移动设备战场之前,移动科技领域一直处于死水一潭的境地,坦率地说,“智能手机”(如果那时候的手机能被称作智能手机的话)非常无趣:它们的能力非...阅读全文
posted @ 2010-08-20 12:37 ganzhijie 阅读(134) 评论(0) 编辑
摘要: 科技产业工程师们目前最深的恐惧与渴望是什么?以下是EETimes资深编辑BolajiOjo不小心"偷听"到的一些工程师心声,他们有的来自苹果(Apple)、AMD、英特尔(Intel)等知名业界大厂,也有未具名的中生代工程师、以 及刚毕业想当工程师的新鲜人。   Apple工程师:会不会有人去迪斯尼乐园度假的时候,不小心把 iPhone 5 忘在某个地方啊?会吗?  Intel工程师:我帮Inte...阅读全文
posted @ 2010-08-20 12:37 ganzhijie 阅读(157) 评论(0) 编辑
摘要: 如果你是一个程序员, 或者你就读计算机相关专业, 那么你应该能理解下面这些诡异的小习惯是怎么养成的,或者你本身就有着其中的某些习惯: 0. 程序员数数会从0开始数起. 例: 程序员吵架的时候会说: “我数三下, 你再不闭嘴我就不客气了! 零! 一! 二!” 或者列清单的时候编号会从0.开始写.因: array[0]是数组的第一个元素.评: 这个习惯的养成是一个艰难的过程. ...阅读全文
posted @ 2010-08-20 12:35 ganzhijie 阅读(134) 评论(1) 编辑
摘要: 互联网的免费模式,即是指为所有用户提供免费服务,对需要高级功能的用户进行收费。这种模式并不鲜见,QQ就是其中的典型,依靠免费战略获得海量用户,少量用户选择付费,购买Vip、QQ秀等个性服务,支撑起了QQ庞大的商业。本博之前曾经提到的笔记软件Evernote也是走的免费模式,仅靠口碑传播,现在已经发展到300万用户Evernote的创业经历作为普通用户,你可以用它免费存储文章、照片、视频等,并可以在...阅读全文
posted @ 2010-08-20 12:32 ganzhijie 阅读(106) 评论(0) 编辑
摘要: Jimmy小时候看球的时候就想了,中国那么多人为啥就出不了几个巨星般的足球运动员呢?长大后,才知道原来中国的足球环境里要出一个巨星之难难于 上青天。1.梅西:从小技术出众,无奈个子太矮身体单薄,14岁时还只有一米四,不受少年队教练待见,常打替补,后被对方假冒少年队的成年队员恶意 踢伤,从此告别足球。 2.托雷斯:速度快,技术好,个子高,终于受到了中国教练的认可,从小一帆风顺,19岁即入选国家队,后...阅读全文
posted @ 2010-08-20 12:31 ganzhijie 阅读(28) 评论(0) 编辑
摘要: 90后的无奈:   当我们出生的时候,奶粉里都有毒了,   当我们长身体的时候,只能吃垃圾食品了,   当我们要上幼儿园的时候,开始乱收费了,   当我们大学毕业的时候,毕业就是失业了,   当我想努力赚钱的时候股市倒了,   当我想努力谈恋爱的时候帅哥都成GAY了,   当我想追求一切流行的时候,又开始非主流了! 80后的无奈:   当我们读小学的时候,读大学不要钱;   我们要...阅读全文
posted @ 2010-08-20 12:30 ganzhijie 阅读(50) 评论(0) 编辑
摘要: 大家好,这篇文章我将教大家如何在Windows环境下下载Android源码,Android 自2007年11月5号发布以来,发展速度如此之快,和它走开源的路是分不开的。我们在开发中有什么不明白不清楚的,直接把Android 源码下下来研究就可以了,看源代码将会让你提升很快!在这之前大家先熟悉俩个代码版本管理工具SVN,以及Git。SVN(Windows环境下最常用的):svn(subversion...阅读全文
posted @ 2010-08-20 12:07 ganzhijie 阅读(165) 评论(0) 编辑
摘要: 自定义View的类必须继承自View并且重写onDraw(Canvas canvas)方法;增加自定义的属性描述必须在values中增加attrs.xml来描述View的属性;例如:<?xml version="1.0" encoding="UTF-8"?><resources> <declare-styleable name="ClockView"> <...阅读全文
posted @ 2010-08-20 11:58 ganzhijie 阅读(355) 评论(0) 编辑
摘要: 摘 要:OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信 息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同时,任何第三方都可以使用 OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAU...阅读全文
posted @ 2010-08-20 11:52 ganzhijie 阅读(212) 评论(0) 编辑
摘要: twitter或豆瓣用户一定会发现,有时候,在别的网站,点登录后转到twitter登录,之后转回原网站,你会发现你已经登录此网站了,比如像 feedtwitterrss2twitter推特中文圈(这个目前好像有点问题转回来的时候是个错误地址)这种 网站就是这个效果。其实这都是拜 OAuth所赐。OAuth是什么?OAuth是一个开放的认证协 议,让你可以在Web或桌面程序中使用简单而标准的,安全的...阅读全文
posted @ 2010-08-20 11:51 ganzhijie 阅读(449) 评论(0) 编辑
摘要: 该应用程序是足球比分直播Android客户端;主要功能:1.查看今日正在进行,即将进行和已经进行的比赛;2.按日期查询赛程赛果;软件截图: 软件下载:可以在安卓市场或优亿市场中搜索“足球比分”来下载;阅读全文
posted @ 2010-08-20 11:50 ganzhijie 阅读(29) 评论(0) 编辑
版权所有,引用不究 QQ:253354910 E-Mail:zhijie.gan@gmail.com MSN:ganzhijie@hotmail.com