自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 简单的UDP通信

JAVA中以两个类来支持UDP通信:java.net.DatagramPacketjava.net.DatagramSocket这两个类代表了UDP通信中的数据包和套接字。所以,使用UDP通信也非常简单,简单归纳成三步,就是创建数据包、创建套接字、用套接字发送/接受数据包。发送UDP数据包1.创建数据包 发送数据包的时候,一般需要知道远程主机的地址和端口,所以使用DatagramPacket

2016-04-14 10:05:00 775

原创 广播(Broadcast)的简单用法

发送一条广播发送广播的方法和启动Activity的方法是非常类似的。首先新建一个Intent对象,然后使用sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()发送广播:sendBroadcast():发送一条普通广播。这种广播接收不分先后,而且不能截断,不能被修改。sendOrderedBroadcast():发送一条有序广播

2016-02-13 00:17:11 3239

原创 Android与PC间进行Socket通信

自己写了一个小程序,是android手机与PC端通过Socket进行通信:服务端服务端是一段java代码,跑在PC上public class SimpleServer { JTextArea textArea; Socket clientSocket; public static void main(String[] args) { new SimpleServer

2016-02-05 23:36:04 1202

原创 Android中的异步通信类AsyncTast

Android中提供了一种轻量级的异步通信的方法:AsyncTast类(接口)。可以使用AsyncTast完成一些简单的多线程的操作,而不需要使用Thread或者Handler。 使用的方法很简单,只需要继承AsyncTast类,指定类型参数,并重写其中的doInBackground()方法和其它几个回调方法。 下面是一个简单的例子:private class DownloadFilesTask

2016-02-01 20:29:49 849

原创 [Head First Java] 一个简单的聊天程序

客户端public class SimpleChatClient implements ActionListener { JTextArea incoming; JTextField outgoing; JButton sendButton; Socket sock; BufferedReader reader; PrintWriter writer;

2016-02-01 14:11:14 1476 1

原创 Java中创建多线程

启动一个新的线程创建一个Runnable对象Runable threadJob = new MyRunnable();Runnable相当于线程中所要执行的工作。我们需要新建一个类继承Runnable接口,并重写它唯一的方法run()。run()方法被放在新线程的栈底,是被第一个执行的方法。 2. 创建一个Thread类的对象,并传入RunnableThread myThread = new

2016-01-31 21:41:00 413

原创 Java中Socket通信的基本方法

从Socket中读取数据创建Socket连接到ServerSocket chatSocket = new Socket("127.0.0.1", 5000);创建Socket的时候需要用到两个重要的参数,一个是IP地址,另外一个是端口号。IP地址可以理解成网络中特定位置的计算机(服务器相当于一台连续工作的计算机),端口号对应于计算机中特定的服务或者应用。 这里的IP地址127.0.0.1是本机

2016-01-30 23:03:18 5378

原创 布局优化的几种方法

布局优化的三种方法

2016-01-27 11:34:15 2445

原创 SeekBar的使用和自定义

SeekBar继承于ProgressBar,实际上就是一个可以拖动的进度条。

2016-01-26 19:07:20 780

原创 Gallery和ImageSwitcher

Gallery可以用来进行横向的图片浏览。不过在API 16以后,谷歌已经废弃了这个控件,推荐使用HorizontalScrollView或者ViewPager替代。 而ImageSwitcher和Gallery很像,可以用来进行图片的切换显示,并且可以添加动画效果。在XML文件中创建Gallery <Gallery android:id="@+id/gallery"

2016-01-26 14:31:19 383

原创 使用ScrollView

ScrollView本质上是一个FrameLayout,所以它只能为单一的控件提供滚动条,最常用子控件的是LinearLayout。 TextView也可以使用ScrollView,但TextView也提供了自带的滚动条的方法。 注意,不能对ListView使用滚动条。

2016-01-25 23:10:41 418

原创 用ViewFlipper实现手势滑动

ViewFlipper也可以结合onTouchEvent实现手势滑动。在MainActivity中重写onTouchEvent方法,可以响应各种屏幕事件。通过一个变量startX保存手势起始坐标,并与当前坐标比较,可以判断向左滑动还是向右滑动。示例代码如下: @Override public boolean onTouchEvent(MotionEvent event) { sw

2016-01-25 14:24:31 794

原创 使用ViewFlipper实现页面自动切换

ViewFlipper继承于ViewAnimator,为两个或者多个页面间的切换提供了一种简单的方式。如果有需要,可以在多个页面中自动切换。在XML文件中定义ViewFlipper布局‘ <ViewFlipper android:id="@+id/view_flipper" android:layout_width="match_parent"

2016-01-25 12:06:59 677

原创 为ViewPager添加适配器

ViewPager有两个常用的适配器,这两个适配器都继承于PagerAdapter,并将Fragment作为数据源:FragmentPagerAdapter:  这种适配器从始至终保存所有页面的Fragment的实例。当页面形式固定且数量较小的时候,可以选择这种适配器。FragmentStatePagerAdater: 这种适配器只会保存当前、前一个和后一个页面的Fragment。当页面数

2016-01-24 23:19:26 2184

原创 为ViewPager添加选项卡导航栏

如果你想使用选项卡导航栏但又不想使用ActoinBar的话,就可以选择给ViewPager添加PagerTabStrip或者PagerTitleStrip来实现。PagerTitleStrip是非交互式的,PagerTapStrip是交互式的,二者在其他方面完全相同。以PagerTapStrip为例来说明:1. 在ViewPager布局中添加PagerTapStripPagerTapS

2016-01-24 16:47:08 1244

原创 使用SharedPreferences存储数据

SharedPreferences 可以替代读写文件的方法,保存一些外部数据。这些数据被保存为键值对的类型,所以对于像账号密码这种类型的数据,保存在SharedPreferences 中将会很方便。如果数据量再大的话,可以考虑使用android自带的数据库SQLite。使用SharedPreferences 的方法主要分为以下几步:1. 获取SharedPreferences在官方文档

2015-12-17 12:46:15 3111

原创 自定义水平进度条Horizontal ProgressBar

系统的ProgressBar 样式打开Styles.xml,可以看到系统的ProgressBar 样式定义如下: false @drawable/progress_horizontal @drawable/progress_indeterminate_horizontal 20dip 20dip

2015-12-13 10:31:46 3136 1

原创 自定义Button

自定义Button,主要是对背景android:background 进行自定义。background 属性可以指定一个颜色的RGB值,也可以指定一个drawable 对象,一般为shape drawable 或者state-list drawable。先来研究一下系统主题下的Button 样式。打开styles.xml,找到系统下的Button 样式如下:

2015-12-12 22:34:44 590

原创 实现启动界面SplashActivity

public class SplashActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash_layout); new

2015-12-12 22:26:47 823

原创 通过继承ListActivity实现列表

如果你的Activity 中只需要显示一个列表,那么就可以通过继承ListActivity 的方式来实现:arrays.xml 情景模式 主题模式 手机 程序管理 通话设置 连接功能 MainActivity.javapublic class MainA

2015-11-12 13:04:30 1614

原创 使ListView 显示头、脚视图

创建ListView 并初始化首先在xml文件里定义ListView: <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:divide

2015-11-12 12:14:32 1417

原创 为文本框添加滚动条

可以在xml文件中定义布局,也可以使用代码的方式动态添加布局。下面的例子采用后者的方式:为文本框添加滚动条,就是在ScrollView 中添加TextView。ScrollView 是一个滚动视图,它只能包含一个子视图,如果需要滚动多个视图,可以让ScrollView 包含一个Layout。在java 代码中,在onCreate() 方法中新建视图并向其传递上下文参数this,调用addV

2015-11-11 13:08:48 3848

原创 向动作栏(Action Bar)中添加动作视图(Action View)

Action View 是可以用来显示在动作栏上取代动作按钮的控件。添加Action View,需要在Menu 资源文件中为item 元素声明actionViewClass 或者actionLayout 属性。下面以添加系统提供的搜索控件为例:<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t

2015-11-09 22:04:18 1557 1

原创 在动作栏(Action Bar)中添加和删除选项卡

创建碎片这里使用内部类的方式在Activity 中创建碎片作为选项卡的内容(使用外部的类也是可以的)。首先写好碎片的布局tab_content.xml,然后在Activity 中实现一个自己的TabContentFragment类继承Fragment: private class TabContentFragment extends Fragment { private String

2015-11-07 23:17:03 730

原创 显示和隐藏动作栏(Action Bar)

创建菜单资源的时候,通过指定android:showAsAction 属性,可以将菜单项在动作栏中显示: <item android:id="@+id/change_bg" android:icon="@drawable/ic_launcher" android:alphabeticShortcut="g" android:

2015-11-07 15:35:33 1120

原创 实现带子菜单的选项菜单(Option Menu)

定义菜单资源一个包含子菜单的菜单资源的例子如下:<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.demo35.MainActivity" >

2015-11-06 20:06:28 812

原创 使用ViewPager实现导航页

创建并初始化ViewPager首先在xml文件中加入ViewPager 的声明: <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="mat

2015-11-06 18:48:49 728 2

原创 使用上下文菜单(Context Menu)

创建Menu 资源文件菜单资源文件通常应该定义在res/menu 目录下,包含的元素有:通常作为菜单资源的根元素,可以包含多个 和用于定义菜单项。可选的属性有id, title, icon 等,具体课参考文档的说明可选标记,将多个菜单项 包装成一个菜单组。可选的属性也有id, enabled, visible 等,具体也可参考官方文档

2015-11-04 23:51:50 1315

原创 Fragment间的信息传递

Fragment 有两种加载方式:静态加载和动态加载。这两种方式加载的Fragment 与Activity 之间传递信息的方法是不一样的。使用静态加载的Fragment 与Activity 之间的通信如果Fragment 是使用静态方法加载的,也就是直接在布局文件中载入的,那么就可以在Activity 中直接通过findViewById() 的方法获取到Fragment 的布局资源,例如,

2015-10-29 18:20:58 531

原创 Fragment的简单用法

创建碎片先新建一个碎片的布局example_fragment.xml,然后再创建自己的fragment 类ExampleFragment 继承自Fragment,并重写其中的onCreateView() 方法:public static class ExampleFragment extends Fragment {    @Override    public View onCr

2015-10-29 00:01:10 412

原创 使用WebView打开网页

首先创建WebView 控件并初始化<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:la

2015-10-27 12:53:18 1085

原创 调用系统自带浏览器的方法

调用系统自带的浏览器打开网页有两种方法。第一种方法: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent);第二种方法: Intent intent = new Int

2015-10-26 13:15:03 1123

原创 使用Spinner实现下拉列表

首先在布局文件中创建Spinner 控件,一个最简单的Spinner 控件如下:<Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />然后再在JAVA代码中初始化Spinner,

2015-10-24 23:26:22 646

原创 使用GridView实现仿桌面图标的设计

GridView 是网格视图,我们可以用它来实现一个类似于桌面图标的布局。和ListView 的使用方法非常相似,GridView 的使用方法包括:新建布局,为布局新建适配器,设置监听事件。1. 首先,新建GridView :activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/

2015-10-20 16:54:07 1145

原创 使用DatePickerDialog和TimePickerDialog实现日期和时间选择对话框

从名子就可以看出DatePickerDialog 和TimePickerDialog 与DatePicker 和TimePicker 的区别,它们可以在对话框中实现日期和时间的选择。使用方法很简单。构造出它们的对象,并调用show() 方法将它们显示出来。 new DatePickerDialog(MainActivity.this, new OnDateSetListener(){

2015-10-17 20:28:59 838

原创 使用DatePicker和TimePicker实现日历功能

DatePicker 和TimePicker 可以在当前的界面中实现日期和时间的选择。使用方法如下:1. 在布局添加DatePicker 和TimePicker这个没什么好说的 <DatePicker android:id="@+id/datePicker1" android:layout_width="match_parent"

2015-10-17 19:14:33 566

原创 在ListView中使用SimpleAdapter

在ListView中使用SimpleAdapter分为三步:创建SimpleAdapter实例,设置布局并初始化数据源, 绑定适配器。创建SimpleAdapter首先在MainActivity中申明SimpleAdater,然后再onCreate()方法中创建它的实例。构造函数如下:SimpleAdapter(Context context, List> data, int

2015-10-16 19:14:41 768

原创 显示和设置ProgressBar的进度

显示和设置进度条的进度主要用到了以下几个属性和方法:android:max设置进度条的最大值android:progress设置第一进度条的当前进度android:secondaryProgress设置第二进度条的当前进度void incrementProgressBy(int diff): 增加第

2015-10-15 23:57:32 3933

原创 在标题栏中显示ProgressBar

进度条分为带进度的和不带进度的,二者都可以在标题栏上显示出来。方法也很简单。首先在onCreate() 方法中启用两种进度条的窗口特性 requestWindowFeature(Window.FEATURE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);然后再将进度条显示出来 s

2015-10-14 23:26:21 775

原创 获取全局Context

Android 提供了一个Application 类,在应用程序启动的时候进行初始化,用于提供一些全局的状态信息。我们可以自己定制一个Application 类,在其中提供获取全局Context 对象的方法。public class MyApplication extends Application { private static Context context; @Overrid

2015-09-30 22:12:53 370

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除