android开发我的新浪微博客户端-载入页面UI篇(1.1)

本 软件设定用户第一个接触到的功能就是页面载入等待功能,这个功能对使用者来说就是一个持续1、2秒钟的等待页面,在用户等待的同时程序做一些必要的检查以 及数据准备工作,载入页面分为UI篇和功能篇,从表及里首先是UI的实现,一个软件除功能之外还得有一个光鲜的外表也是非常重要的,尽管本人设计水平一般 但是还是亲自操刀用ps先做了一下设计效果图如下:
      一、接下来的任务就是在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.xml文件,这个layout采用LinearLayout控件作为顶层控件,然后用ImageView控 件分别实现版本号图片顶部靠左对齐显示、软件名称和图标图片居中对齐、作者名称和blog图片底部靠右对齐。注意在版本号图片显示ImageView控件 下面添加一个RelativeLayout控件作为软件名称和图标图片ImageVIew和作者名称和blog图片ImageView的父控件用来控制居 中对齐已经底部对齐的实现,具体代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  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部分的实现,测试运行模拟器中查看效果,基本上跟最上面的设计效果图相符,测试效果图如下:



原文地址:https://www.cnblogs.com/clarence/p/3229356.html