APP应用开辟(Android)

打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

一、导论

    《App程序开辟》课程,主要介绍Android体系原理及应用。通过本课程的学习,我们可以掌握Android体系开辟理论知识、Android体系架构,以及编程的技术、方法和工具,并能从事Android体系计划、开辟与测试工作。该门课程基于Android Studio平台开辟,主要介绍Android应用开辟所涉及的各方面知识,包罗:Android布局管理、常用基本控件、高级控件、Activity、Service、Content Provider、Broadcast Receiver四大组件、Android数据存储与处置惩罚、网络编程等方面的核心内容。

二、Android布局管理

        1、线性布局

                (1)概念:用水平或垂直方式来表现界面中的控件;
                (2)特点:以水平或垂直方向分列,子控件之间不能重叠,但可以设置权重;
                (3)适用场景:适用于简朴的界面布局,特别是必要按照一定的顺序分列时;
                (4)案例示例: 用线性布局完成一个简易的个人注册页面

        2、约束布局

                (1)概念:解决布局嵌套过多的问题,以机动的方式定位和调整小部件;
                (2)特点:以机动的方式来定位和调整;
                (3)适用场景:适用于必要机动控制位置和大小的复杂界面布局时;
                (4)案例示例:图中左侧为代码,右侧为运行结果

        3、表格布局

                (1)概念:继承了线性布局,用行、列的方式来管理容器内的控件。 它不必要制定行列数目,布局内每添加一行TableRow代码即表现添加一行表格,然后再在TableRow添加子控件,容器的列数由包含列数最多的行决定;
                (2)特点:用表格形式分列;
                (3)适用场景:适用于必要用表格的形式展示页面时;
                (4)案例示例:

        4、帧布局

                (1)概念:在六大布局中最为简朴的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角;
                (2)特点:开辟空白区域,帧里的控件层叠加;
                (3)适用场景:适用于必要重叠表现页面时;
                (4)案例示例:图一为代码,图二为结果表现

图1


图2

        5、相对布局

                (1)概念:让内部的控件根据其他控件或者Parent的位置来确定本身的摆放位置和尺寸;
                (2)特点:通过相对定位分列
                (3)适用场景:适用于必要根据其他视图位置进行布局的页面时;
                (4)代码示例:
<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:stretchColumns="*">

<EditText/>

<TableRow>

<Buttonandroid:text="7"/>

<Buttonandroid:text="8"/>

<Buttonandroid:text="9"/>

<Buttonandroid:text="/"/>

</TableRow>

<TableRow>

<Buttonandroid:text="4"/>

<Buttonandroid:text="5"/>

<Buttonandroid:text="6"/>

<Buttonandroid:text="-"/>

</TableRow>

<TableRow>

<Buttonandroid:text="1"/>

<Buttonandroid:text="2"/>

<Buttonandroid:text="3"/>

<Buttonandroid:text="+"/>

</TableRow>

<TableRow>

<Buttonandroid:text="."/>

<Buttonandroid:text="0"/>

<Buttonandroid:text="="/>

<Buttonandroid:text="*"/>

</TableRow>

</TableLayout>


三、Android常用控件

        1、TextView

                (1)它是用于表现文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能。
                (2)常用属性有很多,有设置宽度(android:layout_width)、设置高度(android:layout_height)、设置文本内容(android:text)、设置背景(android:background)等等
                (3)代码示例:
<TextView android:layout_width="match_parent"

 android:layout_height="wrap_content"  

android:text="Hello World! "  

android:textColor="#000000"  

android:textSize="25sp"  

android:gravity="center" />

        2、EditText

                (1)继承自TextView,可以进行编辑操纵,将用户信息传递给Android程序。还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。
                (2)常用属性有内容为空时表现的提示文本信息(android:hint)、设置输入的字符范例,若多种范例,需加“|”分隔(android:inputType)等等
                (3)监听方法:
                        第一种:setOnEditorActionListener
  public void setOnEditorActionListener (TextView.OnEditorActionListener l)设置在对文本框执行操纵时调用的特殊监听器,需实现接口:OnEditorActionListener
                        第二种: addTextChangedListener
  public void addTextChangedListener (TextWatcher watcher)添加一个TextWatcher到其方法的列表中,无论何时在TextView的文本发生变化时被调用,需实现接口:TextWatcher
                (4)代码示例
<EditText android:layout_width="match_parent“

android:layout_height="wrap_content“

android:hint="请输入姓名"  

android:maxLines="2"  

android:textColor="#000000"

 android:textSize="20sp"  

android:textStyle="italic" />

        3、Button

                (1)它是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完备。
                (2)四种button按钮点击事件实现方式
        第一种:使用onClick属性的方式(这里必要注意的是Activity中实现的方法名称要与onClick属性设置的名称一致)

        第二种: 使用自界说类继承View.OnClickListener方式

第三种:使用匿名内部类方式(图一)或使用内部类方式(图二)

图一


图二

第四种:使用自身类方式

        (3)案例示例
       怎样在Activity中创建一个Button,并为其设置一个点击事件监听器
首先,我们必要在布局文件(XML)中界说Button控件。假设我们有一个名为activity_main.xml的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

<Button android:id="@+id/my_button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:text="点击我" />

</RelativeLayout>

接下来,在对应的Activity中(假设是MainActivity.java),我们必要找到这个Button控件,并为其设置一个点击事件监听器:
public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 查找Button控件

Button myButton = findViewById(R.id.my_button);

// 设置点击事件监听器

myButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 当按钮被点击时执行的代码

// 例如,我们可以在这里弹出一个Toast消息

String message = "按钮被点击了!";

Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();

}

         }

             ); }

                    }

        4、RadioButton

RadioButton为单选按钮,它必要与RadioGroup配合使用,提供两个或多个互斥的选项集。 RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。
        5、CheckBox

表现复选框,它是Button的子类,用于实现多选功能,通过android:checked属性指定CheckBox控件是否选中的状态。
isChecked()方法是用于复选框的,区分CheckBox是否被选中,isChecked有两种返回值: 当CheckBox对象的复选框被选中时,isChecked()返回true,即1; 当CheckBox对象的复选框没有被选中时,isChecked()返回false,即0.
        6、ImageView

是视图控件,它继承自View,其功能是在屏幕中表现图像。ImageView类可以从各种来源加载图像(如资源库或网络),并提供缩放、裁剪、着色(渲染)等功能。
四、Activity和Intent

        1、Activity

        (1)安卓界面由Activity创建和管理,可直接在Activity类里面计划UI界面和控制逻辑。为了实现解耦,现在的安卓开辟,把逻辑控制留在Activity类里面,UI部分放到res/layout目录下,然后在Activity中使用setContentView方法进行关联。一个完备的Activity创建和使用:自界说类继承Activity类,自界说布局文件,在Java代码中通过setContentView方法关联UI布局,在清单文件AndroidManifest.xml声明。
        (2)生命周期:当Activity启动之后便会进入下一状态(启动状态)--->Activity处于屏幕最前端,可与用户进行交互(运行状态)--->Activity仍旧可见,但无法获取焦点,用户对它操纵没有响应(暂停状态)--->Activity完全不可见,体系内存不敷时会销毁该Activity(制止状态)--->Activity将被清理出内存(销毁状态)
        (3)启动模式总结:
standard:标准模式,也是默认的模式(无需手动设置),只要启动 Activity 就会创建新的实例。应用场景:一样平常的Activity,都使用这个模式; singleTop:要启动的 Activity 如果刚好在栈顶已存在,则不创建,并且执行它的 onNewIntent 方法。应用场景:Activity被启动起来的渠道多,适合多应用开启调用的Activity,通过这种设置可以避免已经创建过的Activity被重复创建,可以提供共享的,例如:相机、通知栏点击后必要启动一个活动页(该页面也许已经存在栈内); singleTask:要启动的 Activity 在栈内存在,则把它上面的其他 Activity 全部弹出,露出要启动的 Activity,并且执行它的 onNewIntent 方法。应用场景:APP首页/主页; singleInstance:设置了该属性的 Activity 在设备上只会存在一个示例,且单独在一个栈里面。应用场景:APP首页/主页/呼唤来电界面;
        2、Intent

Intent不但可用于应用程序之间,也可用于应用程序内部的 Activity / Service/Broadcast Receiver之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
五、UI界面交互

        1、按钮点击事件

首先,在你的布局文件(XML)中界说一个按钮,好比activity_main.xml:
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我"
android:layout_centerInParent="true"
android:layout_gravity="center" />
然后,在你的Activity中(好比MainActivity.java),你必要找到这个按钮,并设置一个点击监听器:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 查找按钮
Button myButton = findViewById(R.id.my_button);
// 设置点击监听器
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 当按钮被点击时执行的代码
Toast.makeText(MainActivity.this, "按钮被点击了!", Toast.LENGTH_SHORT).show();
               }
           }
   ); }
}
2、列表项点击事件

首先,你必要在布局文件中界说ListView控件,好比activity_main.xml:
<ListView
android:id="@+id/my_listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然后,在你的Activity中(好比MainActivity.java),你必要找到这个ListView控件,为其设置适配器,并为列表项设置点击事件监听器:
public class MainActivity extends AppCompatActivity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        // 初始化数据  
        List<String> data = Arrays.asList("项目1", "项目2", "项目3", "项目4", "项目5");  
  
        // 查找ListView  
        ListView listView = findViewById(R.id.my_listview);  
  
        // 创建ArrayAdapter  
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);  
  
        // 为ListView设置适配器  
        listView.setAdapter(adapter);  
  
        // 设置ListView的项点击监听器  
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
            @Override  
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
                // 获取被点击项的数据  
                String item = (String) parent.getItemAtPosition(position);  
                // 表现Toast消息  
                Toast.makeText(MainActivity.this, "你点击了:" + item, Toast.LENGTH_SHORT).show();  
            }  
        });  
    }  
}
3、滑动操纵

在Android开辟中,实现一个图片欣赏页面并允许用户通过滑动来切换图片,通常会使用ViewPager(对于较简朴的需求)或RecyclerView(对于更复杂和更机动的需求)。这两种视图组件都提供了滑动监听器,以便你在用户滑动时执行相应的操纵,如切换图片:
recyclerView.addOnItemTouchListener(newRecyclerView.OnItemTouchListener(){
GestureDetectorgestureDetector=newGestureDetector(context,newGestureDetector.SimpleOnGestureListener(){
@Override
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){
//判定滑动方向
if(e1.getX()-e2.getX()>SWIPE_THRESHOLD&&Math.abs(velocityX)>Math.abs(velocityY)){
//向左滑动,切换到上一张图片
previousImage();
}elseif(e2.getX()-e1.getX()>SWIPE_THRESHOLD&&Math.abs(velocityX)>Math.abs(velocityY)){
//向右滑动,切换到下一张图片
nextImage();
}
returntrue;//斲丧这个事件
}
})@Override
publicbooleanonInterceptTouchEvent(RecyclerViewrv,MotionEvente){
gestureDetector.onTouchEvent(e);
returnfalse;//不拦截触摸事件,交给RecyclerView处置惩罚
}
@Override
publicvoidonTouchEvent(RecyclerViewrv,MotionEvente){
//不必要处置惩罚触摸事件,已经在onInterceptTouchEvent中处置惩罚
}
@Override
publicvoidonRequestDisallowInterceptTouchEvent(booleandisallowIntercept){
//不必要处置惩罚
}
});
//SWIPE_THRESHOLD是你界说的阈值,用于判定滑动是否富足远以触发动作
privatestaticfinalintSWIPE_THRESHOLD=100;
实现previousImage()和nextImage()方法来切换图片
<!--activity_main.xml-->

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

<!--RecyclerView用于展示图片列表-->

<androidx.recyclerview.widget.RecyclerView

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent"

androidrientation="horizontal"

android:scrollbars="none"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent"/>

</RelativeLayout>
4、菜单项

        (1)选项菜单
选项菜单是一种常见的用户界面组件,用于提供快捷操纵,提高应用程序的易用性和用户满意度。选项菜单通常用于一些常见的场景,例如复制、粘贴、删除、设置、搜刮或分享等操纵。必要注意的是,在开辟应用程序时必要考虑版本兼容性。
在 res/menu 目录下创建 xml ,界说菜单项; 在 Java 代码重写 onCreateOptionsMenu ,关联 xml 和代码; 在 Java 代码重写 onOptionsItemSelected,处置惩罚菜单点击逻辑。


        给选项菜单添加子菜单,在菜单 xml 添加子标签即可         

        (2)上下文菜单
它是一种在用户长按某个视图时表现的菜单,通常用于提供与所选内容相关的操纵选项。它可以为应用程序提供快捷操纵,并允许用户在特定上下文中执行操纵。
在 res/menu 目录下创建 xml ,界说菜单项; 在 Java 代码重写 onCreateContextMenu,关联 xml 和代码; 在 Java 代码重写 onContextItemSelected,处置惩罚菜单点击逻辑。


     

 5、对话框

它是一种用户界面元素,可以在屏幕上弹出一个小窗口,表现提示信息、用户选择项或请求用户输入数据。其作用是提供一种简朴而直观的用户交互方式,让用户可以快速地做出决定或输入数据,从而方便用户操纵应用程序。对话框通常用于警告、确认、输入和选择等场景,可以根据实际必要选择合适的对话框范例来满足差异的交互需求。 
有基本对话框
     

有平凡列表对话框

 有单选对话框

 有多选对话框

 有输入对话框

 有进度对话框       

六、总结与反思

        通过一次次的学习总结反思,我发现自身的知识秘闻还远远不够,对于一些理论知识的学习还不够充分,对编写代码的效率也另有很大的进步空间,因此,我将采取一下步伐来提高自身的技能水平。首先,我将充分利用课内与课外的时间,大量阅读相关书籍资料,充分利用网上的资源来帮助提升本身,通过查阅Android官方网站和相关开辟者社区资源,学到更多的实践经验;同时多参与一些实践项目,旨在锻炼提升本身,利用自身的知识水平实践于项目中,从中找出短板,补齐它,积极参与网上的相关讨论问题,客气讨教他人,在实践交换中得出真知,我将时刻关注最新的行业动态与新技术的发展,做到与时俱进,不停革新自身。
          



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表