你的位置:首页 > 操作系统

[操作系统]android开发我的新浪微博客户端


本软件设定用户第一个接触到的功能就是页面载入等待功能,这个功能对使用者来说就是一个持续1、2秒钟的等待页面,在用户等待的同时程序做一些必要的检查以及数据准备工作,载入页面分为UI篇和功能篇,从表及里首先是UI的实现,一个软件除功能之外还得有一个光鲜的外表也是非常重要的,尽管本人设计水平一般但是还是亲自操刀用ps先做了一下设计效果图如下:

<ignore_js_op>
      一、接下来的任务就是在android中实现这样的效果显示,从这个效果的设计分别把图片分成背景、版本号部分、软件名称和图标、作者名称和blog四个部分,按照这样的思路把分别生成4张png的图片,背景部分考虑实现横屏和竖屏切换额外添加一张横屏背景图,然后新建android工程,我这里的名称为MySinaWeibo,android版本勾选2.2,并且创建名为MainActivity的Activity作为整个软件的起始页面,然后把上面的这些图片保存到项目的res/drawable-mdpi文件夹下,关于res目录下的drawable-mdpi、drawable-ldpi,、drawable-hdpi三个文件夹的区别,mdpi 里面主要放中等分辨率的图片,如HVGA (320x480)。ldpi里面主要放低分辨率的图片,如QVGA (240x320)。hdpi里面主要放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)。android系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片,在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片,我这里就不进行这么多的考虑了。
     二、完成图片资源的准备后接下就是layout文件的编写, 在res/layout文件夹下新建main.
  1. <?
  2. <LinearLayout
  3.     android:id="@+id/layout"
  4.     android:orientation="vertical"
  5.     android:layout_width="fill_parent"
  6.     android:layout_height="fill_parent">
  7.     <ImageView
  8.     android:layout_width="wrap_content"
  9.     android:layout_height="wrap_content"
  10.     android:src="@drawable/ver"
  11.     android:layout_marginTop="15dip"
  12.     android:layout_marginLeft="15dip">
  13.     </ImageView>
  14.     <RelativeLayout
  15.     android:layout_width="fill_parent"
  16.     android:layout_height="fill_parent">
  17.     <ImageView
  18.     android:layout_width="wrap_content"
  19.     android:layout_height="wrap_content"
  20.     android:src="@drawable/logo"
  21.     android:layout_centerInParent="true">
  22.     </ImageView>
  23.     
  24.     <ImageView
  25.     android:layout_width="wrap_content"
  26.     android:layout_height="wrap_content"
  27.     android:src="@drawable/dev"
  28.     android:layout_alignParentBottom="true"
  29.     android:layout_alignParentRight="true"
  30.     android:layout_marginRight="5dip"
  31.     android:layout_marginBottom="35dip">
  32.     </ImageView>
  33.     </RelativeLayout>
  34. </LinearLayout>

复制代码
三、在ec打开名为MainActivity的Activity源代码文件进行编辑,onCreate部分代码如下:
  1. public void onCreate(Bundle savedInstanceState) {
  2.         super.onCreate(savedInstanceState);
  3.         setContentView(R.layout.main);
  4. }

复制代码
然后运行项目可以在模拟器中显示,上面的几个图片都按照设计的位置和效果进行显示只是整个页面的背景还是黑色的,接下来就是背景部分的显示实现,由于为了实现横竖屏切换显示,背景图的显示采用代码进行控制显示,首先用如下方法获取当前手机是横屏还是竖屏:
  1. //获取屏幕方向
  2. public static int ScreenOrient(Activity activity)
  3.     {
  4.         int orient = activity.getRequestedOrientation(); 
  5.         if(orient != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && orient != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
  6.             //宽>高为横屏,反正为竖屏  
  7.              WindowManager windowManager = activity.getWindowManager();  
  8.              Display display = windowManager.getDefaultDisplay();  
  9.              int screenWidth  = display.getWidth();  
  10.              int screenHeight = display.getHeight();  
  11.              orient = screenWidth < screenHeight ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
  12.         }
  13.         return orient;
  14.     }

复制代码
然后编写一个名为AutoBackground的公共方法用来实现屏幕背景的自动切换,后面的几乎每一个功能页面都需要用到这个方法:
  1. public static void AutoBackground(Activity activity,View view,int Background_v, int Background_h)
  2.     {
  3.         int orient=ScreenOrient(activity);
  4.         if (orient == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { //纵向 
  5.             view.setBackgroundResource(Background_v);
  6.         }else{ //横向
  7.             view.setBackgroundResource(Background_h);
  8.         }  
  9.     }

复制代码
完成上述两方法后在 MainActivity的onCreate方法中调用AutoBackground方法进行屏幕自动切换:
  1. LinearLayout layout=(LinearLayout)findViewById(R.id.layout);
  2. //背景自动适应
  3. AndroidHelper.AutoBackground(this, layout, R.drawable.bg_v, R.drawable.bg_h);

复制代码

到此完成了载入页面的UI部分的实现,测试运行模拟器中查看效果,基本上跟最上面的设计效果图相符,测试效果图如下: <ignore_js_op> 
<ignore_js_op>

问啊-定制化IT教育平台,牛人一对一服务,有问必答,开发编程社交头条 官方网站:www.wenaaa.com

QQ群290551701 聚集很多互联网精英,技术总监,架构师,项目经理!开源技术研究,欢迎业内人士,大牛及新手有志于从事IT行业人员进入!