UI组件(对常规学习帮助不大)

UI组件

列表组件ListView(SimpleAdapter来实现)

步骤一、导入图片

步骤二、创建一个线性布局,里面加入一个列表组件

<?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="wrap_content"
    android:orientation="horizontal"
    >

    <ListView android:id="@+id/mylist"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     >
    </ListView>
</LinearLayout>

步骤三、创建一个线性布局,里面加入用于加载图片和文字数据的图片组件和文字组件,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
    android:orientation="horizontal">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:textSize="20dp"
            android:textColor="#f0f"/>
        <TextView
            android:id="@+id/fy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:textSize="14dp" />
    </LinearLayout>
    <ImageView
        android:id="@+id/imgID"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginRight="10dp"
        android:layout_alignParentRight="true"
        />
    </RelativeLayout>
</LinearLayout>

可以发现我在代码块中不止嵌套了线性布局,还用相对布局再在外面套了一层, 因为如果不用相对布局嵌套的话,线性布局中组件的位置会有问题,这是我在实验中得到的结论。

步骤四、主文件java代码的编写,具体代码如下:

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    private String[] names = new String[]{"Lion","Tiger","Monkey","Dog","Cat","Elephant"};
    private String[] fy = new String[]{"狮子","老虎","猴子","狗","猫","大象"};
    private int[] imgID = new int[]{R.drawable.lion,R.drawable.tiger,R.drawable.monkey
            ,R.drawable.dog,R.drawable.cat,R.drawable.elephant};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.s3);
        List<Map<String,Object>> listItems = new ArrayList<>();
        for (int i=0; i<names.length; i++){
            Map<String,Object> listItem = new HashMap<>();
            listItem.put("name",names[i]);
            listItem.put("fy",fy[i]);
            listItem.put("imgID",imgID[i]);
            listItems.add(listItem);
        }
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,R.layout.imglayout
                ,new String[]{"name","imgID","fy"},new int[]{R.id.name,R.id.imgID,R.id.fy});
        ListView list = findViewById(R.id.mylist);
        list.setAdapter(simpleAdapter);
    }
}

运行结果:

对话框AlertDialog组件的自定义

步骤一、添加一个layout的xml线性布局组件(我命名为alert_dialog),并在其中添加两个编辑框:

<?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:orientation="vertical">
    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="UserName"/>
    <EditText
        android:id="@+id/password"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:hint="Password"/>
</LinearLayout>

步骤二、编辑MainActivity,具体代码如下:

package com.example.sy3_2;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //不能直接通过AlertDialog的构造函数来生产一个AlertDialog,只能通过以下的语句得到对话框对象
        AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
        //设置标题
        dialog.setTitle("ANDROID APP");
        //点击空白处不会消失
        dialog.setCancelable(false);
        //找到自定义对话框的xml文件
        View view1 = View.inflate(MainActivity.this,R.layout.alert_dialog,null);
        //设置布局
        dialog.setView(view1);
        //得到用户名编辑框
        final EditText e1=view1.findViewById(R.id.username);
        //得到密码编辑框
        final EditText e2=view1.findViewById(R.id.password);
        //点击Cancel的监听事件
        dialog.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

            }
        });
        //点击Sign in的监听事件
        dialog.setPositiveButton("Sign in", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                String user=e1.getText().toString().trim();//得到用户名
                String password=e2.getText().toString().trim();//得到密码
                Toast.makeText(MainActivity.this,"用户名:"+user+"\n"+"密码:"+password,Toast.LENGTH_SHORT).show();
            }
        });
        dialog.show();
    }
}

其中的setContentView(R.layout.activity_main);语句其实用哪个边界视图没有太大影响,相当于一个背景,你可以试试,会有一个感性认识。

运行结果如图:

使用XML定义菜单

步骤一、在res下创建menu包,在menu包中创建menu_main.xml文件,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <item android:title="@string/t1"
        >
        <menu>
            <!--定义一组选项菜单-->
            <group android:checkableBehavior="single">
                <!--定义多个菜单项-->
                <item
                    android:id="@+id/font_10"
                    android:title="@string/t11"/>
                <item
                    android:id="@+id/font_16"
                    android:title="@string/t12"/>
                <item
                    android:id="@+id/font_20"
                    android:title="@string/t13"/>
            </group>
        </menu>
    </item>
    <!--定义一个普通菜单项-->
    <item android:id="@+id/plain_item"
        android:title="@string/t2"/>
    <item android:title="@string/t3"
        android:icon="@drawable/ic_launcher_background">
        <menu>
            <!--定义一个普通选项菜单-->
            <group>
                <!--定义三个菜单项-->
                <item
                    android:id="@+id/red_font"
                    android:title="@string/t31"/>
                <item
                    android:id="@+id/black_font"
                    android:title="@string/t32"/>
            </group>
        </menu>
    </item>
</menu>

效果如图:
菜单栏
步骤二、在activity_main.xml文档中添加一个用于测试使用的Text组件,这里我们添加一个编辑组件EditText组件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="93dp"
        android:layout_marginTop="70dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="用于测试的内容"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

如图(在拖动相关组件时要添加自适应边界):
测试组件
步骤三、在MainActivity.java文件中添加代码块,实现将边界视图添加进主view,并实现相关功能:

package com.example.sy3_3;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        registerForContextMenu(editText);
    }
    //添加菜单项的方法
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        MenuInflater inflater = new MenuInflater(this);
        //装填R.Menu.my_menu菜单,并添加到menu中
        inflater.inflate(R.menu.menu_mian,menu);
        return super.onCreateOptionsMenu(menu);
    }

    //菜单项被单击后的回调方法
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.isCheckable()){
            //勾选菜单项
            item.setCheckable(true);
        }
        //switch 判断单击哪个菜单项,并有针对性的做出响应
        switch (item.getItemId()){
            case R.id.font_10:
                editText.setTextSize(10 );
                break;
            case R.id.font_16:
                editText.setTextSize(16 );
                break;
            case R.id.font_20:
                editText.setTextSize(20 );
                break;
            case R.id.red_font:
                editText.setTextColor(Color.RED);
                break;
            case R.id.black_font:
                editText.setTextColor(Color.BLACK);
                break;
            case R.id.plain_item:
                Toast.makeText(MainActivity.this,"Toast",Toast.LENGTH_SHORT)
                        .show();
                break;
        }
        return true;
    }


}

最后效果如以下图片(视频太卡就录制了):
原图:
原图
修改字号为10:
10字号字体
红色:
红色字体
一些需要注意的问题,可以看到我代码中只用了菜单项被单击后的回调方法onOptionsItemSelected,没有使用上下文菜单,所以相关的两个方法我就没有写在里面,按理说:

editText = findViewById(R.id.editText);
        registerForContextMenu(editText);

这两行代码也可以被省略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity的UI粒子效果(UIParticle)是一种在Unity界面中使用的粒子效果系统。与普通的粒子系统不同,UIParticle主要用于UI元素,如按钮、文本、图像等。 UIParticle为UI元素增添了动态、生动的效果,使其更具吸引力和交互性。它可以通过在UI元素上添加特定的粒子效果组件来实现,这些组件包括粒子系统、发射器、材质等。 通过调整UIParticle的参数,我们可以控制粒子的外观、行为和效果。例如,我们可以设置粒子的形状、大小、速度、颜色、透明度等。我们还可以选择不同的发射器模式,如点发射、线发射、面发射等,以及设置发射器的位置、旋转、速率等。此外,我们还可以为粒子添加材质,以实现更多的效果,如纹理、光照、反射等。 UIParticle可以帮助我们实现各种精美的UI特效,如粒子爆炸、烟雾飘动、火焰燃烧等。这些特效可以增强UI元素的表现力和吸引力,使用户更容易被吸引、理解和操作。 另外,UIParticle还支持实时编辑和预览,让我们可以即时调整粒子效果,以满足不同需求。我们可以通过拖拽、调整参数等方式,快速创建和修改特效,提高开发效率。 综上所述,Unity的UI粒子效果是一种非常有用的工具,它可以为我们的UI元素增加动态、生动的效果,提升用户的交互体验。通过灵活调整参数和材质,我们可以实现各种丰富多样的特效,让我们的界面更加有趣、吸引人。 ### 回答2: Unity中的UI粒子效果(UIParticle)是一种用于在UI层面上添加粒子效果的工具。它通过使用Unity的粒子系统功能,实现在UI元素之上播放粒子特效的目的。 相比于常规的粒子系统,UIParticle具有一些特殊的属性和功能,以适应UI界面的需求。首先,UIParticle可以嵌入到Canvas中的任何UI元素上,例如按钮、文本框或图像。这意味着我们可以在UI元素上方创建出各种各样的粒子效果,从而为UI界面增添一些动态和生动的感觉。 其次,UIParticle还可以根据UI元素的尺寸和位置进行自适应调整。比如,当一个按钮被长按或点击时,我们可以通过UIParticle来在按钮周围产生粒子爆炸效果,从而增强用户的交互体验。这种自适应调整使得UIParticle能够更好地融入到UI界面中,使整个界面更加酷炫和有趣。 除了常规的粒子系统属性外,UIParticle还增加了一些与UI元素交互相关的功能。比如,我们可以通过代码控制粒子的播放、暂停和停止等操作,以及根据UI元素的状态来改变粒子的大小、颜色或速度等属性。这使得我们可以根据实际需求,创建出更加个性化和有特色的UI粒子效果。 总之,Unity的UIParticle是一种用于在UI层面上添加粒子效果的工具,它能够通过自适应调整和与UI元素交互的功能,为UI界面增添动感和生动性,改善用户的交互体验。 ### 回答3: Unity中的UIParticle是Unity3D引擎的一个功能模块,用于在UI界面中显示粒子效果。与传统的粒子系统相比,UIParticle更加轻量级且专注于在UI元素上播放粒子效果。 UIParticle可以很方便地与Unity的UGUI系统集成,通过将一个特殊的UI粒子组件添加到Canvas上的UI元素上,就可以将粒子效果直接应用到UI界面上。UIParticle可以使用预设制作的粒子系统效果,也可以通过代码实时生成粒子效果。在UI界面中,可以通过调整UIParticle的参数来修改粒子的大小、形状、颜色、运动速度等属性,从而实现各种各样的粒子效果。 UIParticle支持各种类型的粒子效果,包括爆炸、喷射、扩散、融合等效果。通过设置不同的纹理、材质和渲染模式,可以实现丰富多样的粒子效果。此外,UIParticle还支持粒子发射器的控制,可以通过调整发射器的参数,控制粒子的发射速率、方向、角度等属性,从而实现更加精细的粒子效果。 UIParticle是一个非常方便易用的工具,可以在UI界面中添加生动丰富的粒子效果,增加界面的动感和视觉效果,提升用户体验。它的使用也非常灵活,既可以通过可视化编辑器快速制作出各种粒子效果,也可以通过编程动态生成粒子效果。无论是制作2D还是3D的UI界面,UIParticle都能为开发者带来更多样化的设计选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值