- 博客(51)
- 收藏
- 关注
原创 简单的UDP通信
JAVA中以两个类来支持UDP通信:java.net.DatagramPacketjava.net.DatagramSocket这两个类代表了UDP通信中的数据包和套接字。所以,使用UDP通信也非常简单,简单归纳成三步,就是创建数据包、创建套接字、用套接字发送/接受数据包。发送UDP数据包1.创建数据包 发送数据包的时候,一般需要知道远程主机的地址和端口,所以使用DatagramPacket
2016-04-14 10:05:00 819
原创 广播(Broadcast)的简单用法
发送一条广播发送广播的方法和启动Activity的方法是非常类似的。首先新建一个Intent对象,然后使用sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()发送广播:sendBroadcast():发送一条普通广播。这种广播接收不分先后,而且不能截断,不能被修改。sendOrderedBroadcast():发送一条有序广播
2016-02-13 00:17:11 3276
原创 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 1227
原创 Android中的异步通信类AsyncTast
Android中提供了一种轻量级的异步通信的方法:AsyncTast类(接口)。可以使用AsyncTast完成一些简单的多线程的操作,而不需要使用Thread或者Handler。 使用的方法很简单,只需要继承AsyncTast类,指定类型参数,并重写其中的doInBackground()方法和其它几个回调方法。 下面是一个简单的例子:private class DownloadFilesTask
2016-02-01 20:29:49 873
原创 [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 1503 1
原创 Java中创建多线程
启动一个新的线程创建一个Runnable对象Runable threadJob = new MyRunnable();Runnable相当于线程中所要执行的工作。我们需要新建一个类继承Runnable接口,并重写它唯一的方法run()。run()方法被放在新线程的栈底,是被第一个执行的方法。 2. 创建一个Thread类的对象,并传入RunnableThread myThread = new
2016-01-31 21:41:00 430
原创 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 5426
原创 Gallery和ImageSwitcher
Gallery可以用来进行横向的图片浏览。不过在API 16以后,谷歌已经废弃了这个控件,推荐使用HorizontalScrollView或者ViewPager替代。 而ImageSwitcher和Gallery很像,可以用来进行图片的切换显示,并且可以添加动画效果。在XML文件中创建Gallery <Gallery android:id="@+id/gallery"
2016-01-26 14:31:19 403
原创 使用ScrollView
ScrollView本质上是一个FrameLayout,所以它只能为单一的控件提供滚动条,最常用子控件的是LinearLayout。 TextView也可以使用ScrollView,但TextView也提供了自带的滚动条的方法。 注意,不能对ListView使用滚动条。
2016-01-25 23:10:41 439
原创 用ViewFlipper实现手势滑动
ViewFlipper也可以结合onTouchEvent实现手势滑动。在MainActivity中重写onTouchEvent方法,可以响应各种屏幕事件。通过一个变量startX保存手势起始坐标,并与当前坐标比较,可以判断向左滑动还是向右滑动。示例代码如下: @Override public boolean onTouchEvent(MotionEvent event) { sw
2016-01-25 14:24:31 828
原创 使用ViewFlipper实现页面自动切换
ViewFlipper继承于ViewAnimator,为两个或者多个页面间的切换提供了一种简单的方式。如果有需要,可以在多个页面中自动切换。在XML文件中定义ViewFlipper布局‘ <ViewFlipper android:id="@+id/view_flipper" android:layout_width="match_parent"
2016-01-25 12:06:59 708
原创 为ViewPager添加适配器
ViewPager有两个常用的适配器,这两个适配器都继承于PagerAdapter,并将Fragment作为数据源:FragmentPagerAdapter: 这种适配器从始至终保存所有页面的Fragment的实例。当页面形式固定且数量较小的时候,可以选择这种适配器。FragmentStatePagerAdater: 这种适配器只会保存当前、前一个和后一个页面的Fragment。当页面数
2016-01-24 23:19:26 2222
原创 为ViewPager添加选项卡导航栏
如果你想使用选项卡导航栏但又不想使用ActoinBar的话,就可以选择给ViewPager添加PagerTabStrip或者PagerTitleStrip来实现。PagerTitleStrip是非交互式的,PagerTapStrip是交互式的,二者在其他方面完全相同。以PagerTapStrip为例来说明:1. 在ViewPager布局中添加PagerTapStripPagerTapS
2016-01-24 16:47:08 1276
原创 使用SharedPreferences存储数据
SharedPreferences 可以替代读写文件的方法,保存一些外部数据。这些数据被保存为键值对的类型,所以对于像账号密码这种类型的数据,保存在SharedPreferences 中将会很方便。如果数据量再大的话,可以考虑使用android自带的数据库SQLite。使用SharedPreferences 的方法主要分为以下几步:1. 获取SharedPreferences在官方文档
2015-12-17 12:46:15 3144
原创 自定义水平进度条Horizontal ProgressBar
系统的ProgressBar 样式打开Styles.xml,可以看到系统的ProgressBar 样式定义如下: false @drawable/progress_horizontal @drawable/progress_indeterminate_horizontal 20dip 20dip
2015-12-13 10:31:46 3212 1
原创 自定义Button
自定义Button,主要是对背景android:background 进行自定义。background 属性可以指定一个颜色的RGB值,也可以指定一个drawable 对象,一般为shape drawable 或者state-list drawable。先来研究一下系统主题下的Button 样式。打开styles.xml,找到系统下的Button 样式如下:
2015-12-12 22:34:44 610
原创 实现启动界面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 846
原创 通过继承ListActivity实现列表
如果你的Activity 中只需要显示一个列表,那么就可以通过继承ListActivity 的方式来实现:arrays.xml 情景模式 主题模式 手机 程序管理 通话设置 连接功能 MainActivity.javapublic class MainA
2015-11-12 13:04:30 1642
原创 使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 1443
原创 为文本框添加滚动条
可以在xml文件中定义布局,也可以使用代码的方式动态添加布局。下面的例子采用后者的方式:为文本框添加滚动条,就是在ScrollView 中添加TextView。ScrollView 是一个滚动视图,它只能包含一个子视图,如果需要滚动多个视图,可以让ScrollView 包含一个Layout。在java 代码中,在onCreate() 方法中新建视图并向其传递上下文参数this,调用addV
2015-11-11 13:08:48 3870
原创 向动作栏(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 1577 1
原创 在动作栏(Action Bar)中添加和删除选项卡
创建碎片这里使用内部类的方式在Activity 中创建碎片作为选项卡的内容(使用外部的类也是可以的)。首先写好碎片的布局tab_content.xml,然后在Activity 中实现一个自己的TabContentFragment类继承Fragment: private class TabContentFragment extends Fragment { private String
2015-11-07 23:17:03 760
原创 显示和隐藏动作栏(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 1150
原创 实现带子菜单的选项菜单(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 838
原创 使用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 760 2
原创 使用上下文菜单(Context Menu)
创建Menu 资源文件菜单资源文件通常应该定义在res/menu 目录下,包含的元素有:通常作为菜单资源的根元素,可以包含多个 和用于定义菜单项。可选的属性有id, title, icon 等,具体课参考文档的说明可选标记,将多个菜单项 包装成一个菜单组。可选的属性也有id, enabled, visible 等,具体也可参考官方文档
2015-11-04 23:51:50 1332
原创 Fragment间的信息传递
Fragment 有两种加载方式:静态加载和动态加载。这两种方式加载的Fragment 与Activity 之间传递信息的方法是不一样的。使用静态加载的Fragment 与Activity 之间的通信如果Fragment 是使用静态方法加载的,也就是直接在布局文件中载入的,那么就可以在Activity 中直接通过findViewById() 的方法获取到Fragment 的布局资源,例如,
2015-10-29 18:20:58 551
原创 Fragment的简单用法
创建碎片先新建一个碎片的布局example_fragment.xml,然后再创建自己的fragment 类ExampleFragment 继承自Fragment,并重写其中的onCreateView() 方法:public static class ExampleFragment extends Fragment { @Override public View onCr
2015-10-29 00:01:10 432
原创 使用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 1142
原创 调用系统自带浏览器的方法
调用系统自带的浏览器打开网页有两种方法。第一种方法: 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 1157
原创 使用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 667
原创 使用GridView实现仿桌面图标的设计
GridView 是网格视图,我们可以用它来实现一个类似于桌面图标的布局。和ListView 的使用方法非常相似,GridView 的使用方法包括:新建布局,为布局新建适配器,设置监听事件。1. 首先,新建GridView :activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/
2015-10-20 16:54:07 1176
原创 使用DatePickerDialog和TimePickerDialog实现日期和时间选择对话框
从名子就可以看出DatePickerDialog 和TimePickerDialog 与DatePicker 和TimePicker 的区别,它们可以在对话框中实现日期和时间的选择。使用方法很简单。构造出它们的对象,并调用show() 方法将它们显示出来。 new DatePickerDialog(MainActivity.this, new OnDateSetListener(){
2015-10-17 20:28:59 859
原创 使用DatePicker和TimePicker实现日历功能
DatePicker 和TimePicker 可以在当前的界面中实现日期和时间的选择。使用方法如下:1. 在布局添加DatePicker 和TimePicker这个没什么好说的 <DatePicker android:id="@+id/datePicker1" android:layout_width="match_parent"
2015-10-17 19:14:33 585
原创 在ListView中使用SimpleAdapter
在ListView中使用SimpleAdapter分为三步:创建SimpleAdapter实例,设置布局并初始化数据源, 绑定适配器。创建SimpleAdapter首先在MainActivity中申明SimpleAdater,然后再onCreate()方法中创建它的实例。构造函数如下:SimpleAdapter(Context context, List> data, int
2015-10-16 19:14:41 792
原创 显示和设置ProgressBar的进度
显示和设置进度条的进度主要用到了以下几个属性和方法:android:max设置进度条的最大值android:progress设置第一进度条的当前进度android:secondaryProgress设置第二进度条的当前进度void incrementProgressBy(int diff): 增加第
2015-10-15 23:57:32 4004
原创 在标题栏中显示ProgressBar
进度条分为带进度的和不带进度的,二者都可以在标题栏上显示出来。方法也很简单。首先在onCreate() 方法中启用两种进度条的窗口特性 requestWindowFeature(Window.FEATURE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);然后再将进度条显示出来 s
2015-10-14 23:26:21 793
原创 获取全局Context
Android 提供了一个Application 类,在应用程序启动的时候进行初始化,用于提供一些全局的状态信息。我们可以自己定制一个Application 类,在其中提供获取全局Context 对象的方法。public class MyApplication extends Application { private static Context context; @Overrid
2015-09-30 22:12:53 393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人