首页 文章 精选 留言 我的

精选列表

搜索[UI库],共10000篇文章
优秀的个人博客,低调大师

UI组件-实用组件

前言 我们听过无数的道理,却仍旧过不好这一生。 Toast组件 Toast是一种非常方便的提示消息框,它会在程序界面上显示一个简单的提示信息。它具有如下两个特点。 Toast提示信息不会获得焦点。 Toast提示信息过一段时间会自动消失。 使用Toast来生成提示消息也非常简单,只要如下几个步骤。 调用Toast的构造器或makeText()静态方法创建一个Toast对象。 调用Toast的方法来设置该消息的对齐方式、页边距等。 调用Toast的show()方法将它显示出来。 除此之外,Toast不仅可以显示文本,还可以显示图片、列表之类的复杂提示。 代码示例 toast.xml <?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" android:gravity="center_horizontal" > <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示简单提示" /> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示图片提示" /> </LinearLayout> MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.toast); Button simple = (Button) findViewById(R.id.bt1); //为按钮的单击事件绑定事件监听器 simple.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //创建一个Toast提示消息 //设置该Toast提示信息的持续时间 Toast toast = Toast.makeText(MainActivity.this, "简单的提示信息", Toast.LENGTH_SHORT); toast.show(); } }); Button imageBt = (Button) findViewById(R.id.bt2); imageBt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //创建一个Toast提示信息 Toast toast = new Toast(MainActivity.this); //设置Toast的显示位置 toast.setGravity(Gravity.CENTER, 0, 0); //创建一个ImageView ImageView image = new ImageView(MainActivity.this); image.setImageResource(R.drawable.ic_launcher); //创建一个LinearLayout容器 LinearLayout ll = new LinearLayout(MainActivity.this); //向LinearLayout中添加图片、原有的View ll.addView(image); //创建一个TextView TextView textView = new TextView(MainActivity.this); textView.setText("带图片的提示信息"); textView.setTextSize(24); textView.setTextColor(Color.BLUE); ll.addView(textView); //设置Toast显示自定义View toast.setView(ll); //设置Toast的显示时间、 toast.setDuration(Toast.LENGTH_LONG); toast.show(); } }); } } 效果 Screenshot_20171023-104940.png 提示 建议使用对话框来完成图片提示及其列表显示之类的复杂提示 CalendarView组件 日历视图(CalendarView)用于显示和选择日期,用户既可以选择日期,也可通过触摸来滚动日历。 代码示例 calendarview.xml <?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" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="选择您的生日:" /> <!-- 设置以星期二作为每周的第一天,设置该组件总共显示4个星期,并对该组件的日期时间进行了定制 --> <CalendarView android:id="@+id/calendarView" android:layout_width="match_parent" android:layout_height="match_parent" android:firstDayOfWeek="3" android:shownWeekCount="4" android:focusedMonthDateColor="#f9f" android:weekSeparatorLineColor="#ff0" android:unfocusedMonthDateColor="#f00" /> </LinearLayout> public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.calendarview); CalendarView cv = (CalendarView) findViewById(R.id.calendarView); cv.setOnDateChangeListener(new OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { //使用Toast显示用户选择的日期 Toast.makeText(MainActivity.this, "您的生日是" + year + "年" + month + "月" + dayOfMonth + "日", Toast.LENGTH_SHORT).show(); } }); } } MainActivity.java 效果 Screenshot_20171023-111302.png 提示 android:dataTextAppearance属性,设置该日历视图的日期文字的样式。 android:firstDayOfWeek属性,设置每周的第一天。 android:showWeekNumber属性,设置是否显示第几周。 android:设置该日历组件总共显示几个星期。 DatePicker和TimePicker组件 日期、时间选择器是两个简单的组件,由FrameLayout派生而来,其中DatePicker供用户选择日期;TimePicker供用户选择时间。 代码示例 picker.xml <?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" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="选择购买本书的具体时间" /> <DatePicker android:id="@+id/datePicker" android:layout_width="wrap_content" android:layout_height="200dp" android:layout_gravity="center_horizontal" android:startYear="2000" android:endYear="2018" android:calendarViewShown="true" android:spinnersShown="true" /> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="100dp" android:layout_gravity="center_horizontal" /> <EditText android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" android:cursorVisible="false" /> </LinearLayout> public class MainActivity extends Activity { private int year; private int month; private int day; private int hour; private int minute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.picker); DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker); TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker); //获取当年的年、月、日、小时、分钟 Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); hour = c.get(Calendar.HOUR); minute = c.get(Calendar.MINUTE); //初始化DatePicker组件,初始化指定监听器 datePicker.init(year, month, day, new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { MainActivity.this.year = year; MainActivity.this.month = monthOfYear; MainActivity.this.day =dayOfMonth; //显示当前日期、时间、 showDate(year, month, day, hour, minute); } }); //为TimePicker指定监听器 timePicker.setOnTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { MainActivity.this.hour = hourOfDay; MainActivity.this.minute = minute; //显示当前日期、时间、 showDate(year, month, day, hour, minute); } }); } //定义在EditText中显示当前日期、时间的方法 private void showDate(int year, int month, int day, int hour, int minute) { EditText show = (EditText) findViewById(R.id.show); show.setText("您的购买日期为:" + year + "年" + (month + 1) + "月" + day + "日" + hour + "时" + minute +"分"); } } MainActivity.java 效果 Screenshot_20171023-124453.png 提示 android:calendarViewShown属性,设置该日期选择器是否显示CalendarView组件。 android:endYear属性,设置日期选择器允许选择的最后一年。 android:startYear属性,设置日期选择器允许选择的第一年。 android:spinnersShown属性,设置该日期选择器是否显示Spinner日期选择组件。 NumberPicker组件 数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值。使用该组件常用的方法如下。 setMinValue(int minVal):设置该组件支持的最小值。 setMaxValue(int maxVal):设置该组件支持的最大值。 setValue(int value):设置该组件的当前值。 代码示例 numberpicker.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:text="选择低价:" android:layout_width="120dp" android:layout_height="wrap_content" /> <NumberPicker android:id="@+id/np1" android:layout_width="match_parent" android:layout_height="80dp" android:focusable="true" android:focusableInTouchMode="true" /> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:text="选择高价:" android:layout_width="120dp" android:layout_height="wrap_content" /> <NumberPicker android:id="@+id/np2" android:layout_width="match_parent" android:layout_height="80dp" android:focusable="true" android:focusableInTouchMode="true" /> </TableRow> </TableLayout> MainActivity.java public class MainActivity extends Activity { NumberPicker np1,np2; //定义最低价格、最高价格的初始值 int minPrice = 25, maxPrice = 75; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.numberpicker); np1 = (NumberPicker) findViewById(R.id.np1); //设置np1的最大值和最小值 np1.setMinValue(10); np1.setMaxValue(50); //设置np1的当前值 np1.setValue(minPrice); np1.setOnValueChangedListener(new OnValueChangeListener() { //当NumberPicker的值发生改变时,将会激发该方法 @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { minPrice = newVal; showSelectedPrice(); } }); np2 = (NumberPicker) findViewById(R.id.np2); //设置np2的最小值和最大值 np2.setMinValue(60); np2.setMaxValue(100); //设置np2的当前值 np2.setValue(maxPrice); np2.setOnValueChangedListener(new OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { maxPrice = newVal; showSelectedPrice(); } }); } private void showSelectedPrice() { Toast.makeText(this, "您选择最低价格为: " + minPrice + ",最高价格为: " + maxPrice, Toast.LENGTH_SHORT).show(); } } 效果 Screenshot_20171023-131415.png SearchView组件 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输入完成后提交搜索时,也可以通过监听器执行实际的搜索。使用SearchView时可使用如下常用的方法。 setIconifiedByDefault(boolean iconified):设置该搜索框默认是否自动缩小为图标。 setSubmitButtonEnabled(boolean enable):设置是否显示搜索按钮。 setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本。 setOnQueryTextListener(SearchView.OnQueryTextListener listener):为该搜索设置监听事件。 如果为SearchView增加一个配套的ListView,则可以为SearchView增加自动完成的功能。 代码示例 searchview.xml <?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" > <SearchView android:id="@+id/sv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> MainActivity.java public class MainActivity extends Activity { private SearchView sv; private ListView lv; // 自动完成的列表 private final String[] mString = { "aaaaa", "bbbbbb", "cccccc" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.searchview); lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mString)); //设置ListView启用过滤器 lv.setTextFilterEnabled(true); sv = (SearchView) findViewById(R.id.sv); //设置该SearchView默认是否自动缩小为图标 sv.setIconifiedByDefault(true); //设置该SearchView显示搜索按钮 sv.setSubmitButtonEnabled(true); //设置该SearchView内默认显示的提示文本 sv.setQueryHint("查找"); //为该组件设置监听器 sv.setOnQueryTextListener(new OnQueryTextListener() { //单击搜索按钮时激发该方法 @Override public boolean onQueryTextSubmit(String query) { //实际应用中应该在该方法中执行查询 Toast.makeText(MainActivity.this, "您的选择是:" + query, Toast.LENGTH_SHORT).show(); return false; } //用户输入字符时激活该方法 @Override public boolean onQueryTextChange(String newText) { //如果newText不是长度为0的字符串 if(TextUtils.isEmpty(newText)) { //清楚ListView的过滤 lv.clearTextFilter(); } else { //使用用户输入的内容对ListView的列表项进行过滤 lv.setFilterText(newText); } return true; } }); } } 效果 Screenshot_20171023-134249.png TabHost组件 选项卡(TabHost)是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域。通过这种方式,就可以在一个容器里放置更多的组件,例如手机系统都会在同一个窗口中定义多个标签页来显示通话记录。 使用TabHost的一般步骤如下。 在界面布局文件中定义TabHost组件,并为该组件定义该选项卡的内容。 Activity应该继承TabActivity。 调用TabActivity的getTabHost()方法获取TabHost对象。 通过TabHost对象的方法来创建、添加选项卡。 代码示例 tabhost.xml <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 定义第一个标签页内容 --> <LinearLayout android:id="@+id/tab01" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="已拨电话" /> </LinearLayout> <!-- 定义第二个标签页内容 --> <LinearLayout android:id="@+id/tab02" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="未接电话" /> </LinearLayout> <!-- 定义第三个标签内容 --> <LinearLayout android:id="@+id/tab03" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="语音信箱" /> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> MainActivity.java public class MainActivity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabhost); // 获取该Activity里面的TabHost组件 TabHost tabHost = getTabHost(); // 创建第一个Tab界面 TabSpec tab1 = tabHost.newTabSpec("tab1").setIndicator("已接电话")// 设置标题 .setContent(R.id.tab01);// 设置内容 // 添加第一个标签页 tabHost.addTab(tab1); TabSpec tab2 = tabHost.newTabSpec("tab2").setIndicator("未接电话")// 设置标题 .setContent(R.id.tab02);// 设置内容 // 添加第二个标签页 tabHost.addTab(tab2); TabSpec tab3 = tabHost.newTabSpec("tab3").setIndicator("语音信箱")// 设置标题 .setContent(R.id.tab03);// 设置内容 // 添加第三个标签页 tabHost.addTab(tab3); } } 效果 Screenshot_20171023-141612.png 提示 最新版本的Anroid平台已经不再推荐使用TabActivity,而是推荐使用Fragement来代替TabActivity。 ScrollView和HorizontalScrollView组件 ScrollView由FrameLayout派生而出,它就是一个用于为普通组件添加滚动条的组件。ScrollView的作用是为该组件添加垂直滚动条,HorizontalScrollView的作用是为该组件添加水平滚动条。 代码示例 <?xml version="1.0" encoding="utf-8"?> <!-- 定义ScrollView,为里面的组件添加垂直滚动条 --> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 定义HorizontalScrollView,为里面的组件添加水平滚动条 --> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > ....若干个TextView </LinearLayout> </HorizontalScrollView> </ScrollView> 效果 Screenshot_20171023-143018.png Notification组件 Notification是显示在手机状态栏的通知——手机状态栏位于手机屏幕的最上方,它是一种具有全局效果的通知。程序一般通过NotificationManager服务来发送Notification。 代码示例 notification.xml <?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" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:onClick="send" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消" android:onClick="cancel" android:layout_gravity="center_horizontal" /> </LinearLayout> MainActivity.java public class MainActivity extends Activity { static final int NOTIFICATION_ID = 0x123; NotificationManager nm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notification); //获取系统的NotificationManager服务 nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); } public void send(View v) { //创建一个启动其他Activity的Intent Intent intent = new Intent(MainActivity.this,OtherActivity.class); PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); Notification notify = new Notification.Builder(this) //设置打开该通知,该通知自动取消 .setAutoCancel(true) //设置显示在状态栏的通知提示信息 .setTicker("有新消息") //设置通知内容的图标 .setSmallIcon(R.drawable.ic_launcher) //设置通知内容的标题、 .setContentTitle("一条新通知") //设置通知内容 .setContentText("你好,halo") //设置使用系统默认的声音、默认LED灯 .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS) //设置通知将要启动的Intent .setContentIntent(pi).build(); //发送通知 nm.notify(NOTIFICATION_ID, notify); } public void cancel(View v) { nm.cancel(NOTIFICATION_ID); } } 效果 Screenshot_20171023-150114.png 提示 这个应用程序的功能是点击发送按钮收到消息通知,然后点击通知将会跳转到另一个Activity。因为上面的程序需要访问系统的闪关灯、振动器,还需要在AndroidManifest.xml文件中声明权限。

优秀的个人博客,低调大师

iphone UI 开发教程

UIControl IOS控件编程—IOS开发 有关View的几个基础知识点-IOS开发 UIKeyboard键盘相关知识点-IOS开发 UISegmentedControl 分段控件-IOS开发 UISlider 滑块控件—IOS开发 UISwitch 开关控件—IOS开发 打开键盘遮住View的问题解决方法-IOS开发 UITextField 文本字段控件-IOS开发 UIWebView网页视图—IOS开发 操纵状态栏-IOS开发 UIActionSheet操作表单-IOS开发 UIAlertView警报-IOS开发 应用程序徽章-IOS开发 在程序中调用Safari和发起电话呼叫-IOS开发 IOS开发UIButton 按钮控件 IOS开发-UIPageControl 分页控件 IOS开发-UIActivityIndicatorView、UIProgressView 活动与进度指示器 IOS开发--UIImage 图像 本文转自qianqianlianmeng博客园博客,原文链接:http://www.cnblogs.com/aimeng/archive/2012/03/02/2377300.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android UI 备忘:DrawerLayout

DrawerLayout 作者:飞龙 DrawerLayout是android.support.v4中提供的控件,用于实现边栏和侧滑效果。大家在各种 APP 中看到的左侧边栏就是这个控件。 创建 DrawerLayout 最好是界面的顶级布局,否则可能出现触摸时间被屏蔽的问题。它拥有两个子元素,第一个是主内容,第二个是菜单内容。 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/main_linear" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" /> <ListView android:id="@+id/menu_list" android:layout_width="360dp" android:layout_height="match_parent" android:layout_gravity="left" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout> 主布局和菜单布局都可以是任何东西。这里主布局是空的LinearLayout,菜单布局是ListView。为了使菜单布局宽度合适,我将其设置为360dp。 主内容区的布局代码必须放在侧滑菜单布局的前面, 因为 XML 元素按 z 序(层叠顺序)排列,并且抽屉式导航栏必须位于内容顶部。 菜单布局必须设置layout_gravity属性,它表示侧滑菜单的滑出方向。一共有四个取值: 值 含义 left 左侧滑出 right 右侧滑出 start 如果是从左到右书写的语言,则从左侧滑出,否则从右侧滑出 end 如果是从左到右书写的语言,则从右侧滑出,否则从左侧滑出 如果要在右边放置另一个菜单,只要再添加一个ListView,将layout_gravity设置成相反的方向即可。 效果是这样: 操作 通过手动侧滑可以打开或关闭边栏,触摸主布局可以关闭边栏。 我们也可以编程来打开关闭边栏: void openDrawer(int gravity):打开边栏 void closeDrawer(int gravity):关闭边栏 boolean isDraweropen(int gravity):判断边栏是否打开 参数gravity必须与 XML 中一致,同样有四种选择: Gravity.LEFT Gravity.RIGHT Gravity.START Gravity.END 事件 有的时候,我们需要监听边栏是否打开或关闭。我们需要调用setDrawerListener方法,实现DrawerLayout.DrawerListener作为监听器。我们需要覆盖四个方法。 mDrawerLayout.setDrawerListener(new DrawerListener() { /** * 当抽屉滑动状态改变的时候被调用 * 状态值是STATE_IDLE(闲置-0),STATE_DRAGGING(拖拽-1),STATE_SETTLING(固定-2)中之一。 * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE */ @Override public void onDrawerStateChanged(int arg0) { } /** * 当抽屉被滑动的时候调用此方法 * arg1 表示 滑动的幅度(0-1) */ @Override public void onDrawerSlide(View arg0, float arg1) { } /** * 当一个抽屉被完全打开的时候被调用 */ @Override public void onDrawerOpened(View arg0) { } /** * 当一个抽屉完全关闭的时候调用此方法 */ @Override public void onDrawerClosed(View arg0) { } }); 但是这样太麻烦了,我们可以继承SimpleDrawerListener,只覆盖所需的方法: mDrawerLayout.setDrawerListener(new SimpleDrawerListener() { @Override public void onDrawerOpened(View arg0) { } @Override public void onDrawerClosed(View arg0) { } });

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册