首页 > 其他分享 >一个android文本比对app的实现(二)--界面

一个android文本比对app的实现(二)--界面

时间:2023-06-14 11:02:11浏览次数:32  
标签:界面设计 layout app 布局 工具栏 android 文本


<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">继上一篇博文大致介绍了这一简单但有点用处的app后(详情:</span><span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">,本篇对该app的界面实现做一些说明。谷歌对android app 的界面开发提供了精巧的设计,其界面设计的布局技术(layout), 运用了类似于设计模式的composite pattern, 具体来说,就像俄罗斯娃娃,外面一个大娃娃可以套一个小娃娃。android 的layout 里面可以再嵌入其他layout, 层层递进,进而形成变化多样而又非常灵活的界面布局。</span>


本app 的启动界面设计比较简单,最高层的layout是一个 table layout, table 分两行,第一行和第二行高度比是九比一, 第一行里面潜入了一个linear layout, 这个linear layout 又被平均分成两部分,分别存放两个textview 控件,第二行则用于存放底部按钮栏,整体布局文件内容如下:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
      android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".TwoHouseTansActivity" >
 
  <TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.88"
        android:id="@+id/top"
        >
 
        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.5" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/tvbar" 
         />
    </TableRow>
    
    <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.5" >
    
      <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/tvbar1" 
         />
      
    </TableRow> 
  </TableLayout>
  
 <include layout="@layout/bottom_tab_layout"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="0.12">
 </include>
</LinearLayout>



值得注意的是, 第二行table row 使用关键字include 引入了新的布局文件,这样可以避免一个布局文件变得过于庞大和复杂。底层工具栏是一个比较实用的组件,

我也是从别的朋友那借鉴过来的,该组件不是我原创,由于其易用性,在这里解析一下底层工具栏的设计思路,或许对有需要的朋友会有些帮助。我们看看底层工具栏的布局文件内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bottom_bar"
    android:orientation="horizontal" >
 
    <LinearLayout
        android:id="@+id/id_tab_prev"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical" >
 <!-- android:clickable="false" 是为了防止ImageButton截取了触摸事件 ,这里事件要给它的上一级linearlayout-->
        <ImageButton
             android:id="@+id/go_down_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:clickable="false"
            android:src="@drawable/go_down" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一处"
          />
    </LinearLayout>

    <LinearLayout
         android:id="@+id/id_tab_address"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical" >

        <ImageButton
             android:id="@+id/go_up_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
             android:clickable="false"
            android:src="@drawable/go_up" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="通讯录"
          />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/id_tab_frd"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical" >

        <ImageButton
             android:id="@+id/id_tab_frd_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
             android:clickable="false"
            android:src="@drawable/tab_find_frd_normal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="发现"
   />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/id_tab_settings"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical" >

        <ImageButton
             android:id="@+id/id_tab_settings_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:clickable="false"
            android:src="@drawable/tab_settings_normal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="我"
            />
    </LinearLayout>

</LinearLayout>



底部工具栏在整体上,使用了一个水平方向的线性布局,然后又将水平空间平均分成四小块,在每一小块里,又嵌入一个竖直方向的线性布局。在这个竖直方向的布局小方块的顶部,我们放置了一个ImangeButton 控件,在按钮控件的下方,放置了一个textview, 用来做按钮的标题,这一布局最终形成的效果如下:


一个android文本比对app的实现(二)--界面_布局

这里面有一个bug, 就是前两个上下箭头按钮,由于图片过大,从而盖住了下方的textview,  找时间我要改掉,本着互联网的迭代精神,暂且把他放上去吧。我的界面设计虽然简单,但管中窥豹,基本上展示了android界面设计的技术特点,就是通过件套布局的方式,循环递归的设计出复杂多变的操控界面。

标签:界面设计,layout,app,布局,工具栏,android,文本
From: https://blog.51cto.com/u_16160261/6476240

相关文章

  • 一个android 文本比对App的实现(一)
    做c++开发很多年了,从早年windowsvc6.0做客户端程序开发,这些年后台流媒体服务器后台开发。随着时代变迁,移动互联逐渐兴起,直到现在,移动互联的风头早已盖过传统互联网应用,因而传统后台开发似乎日渐式微。如今要找工作的话,android,IOS等开发的职位不但数量远远多于c++,而且报酬也要比c+......
  • Canvas_绘制线段、圆形、文本、图像、视频、处理图像数据
    Canvas_绘制线段、圆形、文本、图像、视频、处理图像数据绘制线段varcanvas1=document.querySelector("#canvas1");varctx=canvas1.getContext("2d");//设置开始路径ctx.beginPath()//设置绘制的起始点ctx.moveTo(50,50);//设置经过某个位置ctx.lineTo(50,30......
  • uniapp 更新依赖到指定版本解决uniAPI不可用问题
    我解决的问题:在项目中使用uni.startLocationUpdate(OBJECT)报错:uni.startLocationUpdateisnotafunction 怀疑是版本问题,当时的版本......
  • uniapp 不显示原生导航
    自定义导航栏使用注意当navigationStyle设为custom或titleNView设为false时,原生导航栏不显示//pages配置部分页面{"path":"pages/default/systemError","style":{"navigationBarTitleText":"系统异常","navigationS......
  • SpringBoot启动类@SpringBootApplication注解
    在springBoot的启动类中,提供了一个mai函数的程序入口,来启动加载SpringBoot程序,那么注解@SpringBootApplication,通过源码可以看到,它相当于@ComponentScan+@EnableAutoConfiguration+@SpringBootConfiguration。通过@SpringBootConfiguration注解的源码得知,其配置了一个@Confi......
  • R语言文本挖掘、情感分析和可视化哈利波特小说文本数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22984最近我们被客户要求撰写关于文本挖掘的研究报告,包括一些图形和统计输出。一旦我们清理了我们的文本并进行了一些基本的词频分析,下一步就是了解文本中的观点或情感。这被认为是情感分析,本教程将引导你通过一个简单的方法来进行情感分析。......
  • android Button组件的属性和方法
    androidButton组件的属性和方法   一、相关属性     二、相关方法 setClickable(booleanclickable)设置按钮是否允许点击。clickable=true:允许点击clickable=false:禁止点击setBackgroundResource(intresid)通过资源文件设置背景色。resid:资源xml文件ID。按钮默认背......
  • 【转】Android字体小结
     android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。android:bufferType指定getText()方式取......
  • Android SeekBar的使用
    AndroidSeekBar的使用  <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="......
  • 【Android】ListView与Button的共存问题解决
    【Android】ListView与Button的共存问题解决这两天在捣鼓ListViewwidget,为了在ListView中加入Button这类的有“点击”事件的widget,请教了不少高手,感谢LandMark对我的认真讲解,下面把解决过程描述一下。 ListView和其它能触发点击事件的widget无法一起正常工作的......