
Android
文章平均质量分 88
eclipse_xu
Android开发
展开
-
Flutter你竟是这样的布局
对于Flutter学习者来说,掌握Flutter的布局行为,直接决定了开发者在布局的时候是否能做到高效、快速的开发,但是初学者面对茫茫多的Widget以及各种无法预料的布局行为,总是很难将心中所想,转化为Flutter的代码。本文翻译整理自https://flutter.dev/docs/development/ui/layout/constraints当学习Flutter的人问你,为什么宽度为100的某些小部件在显示的时候,宽度不为100像素时,你的默认答案是告诉他们将小部件放在Center内,对吗?原创 2020-06-28 09:42:17 · 7851 阅读 · 0 评论 -
Flutter修仙传——起源
天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。上古时代,手机的江湖,正经历了第三纪元的更迭,塞班王朝的陨灭,让这个世界又重新恢复到了一片蛮荒之中。而几乎就在同时,天地之间诞生了两位宗师,名曰Android,名曰iOS。一瞬间,整个江湖沸腾了,这两位宗师就好像是新世界的灯塔,让整个大陆的人为之向往。短短几年时间,两位宗师在这片大陆上就建立了当今世上最大的两个门派。Android派门众最多,势力范围也最...原创 2020-02-20 10:55:58 · 1965 阅读 · 0 评论 -
Flutter修仙指南——初学者到底需要怎样的Demo
Flutter,毫无疑问是今年最火的技术方向,作为最早接触Flutter的一批开发者,从入门,到现在,我也经历了各种阶段,从入门时的无从下手,到略懂之后被各种蜜汁Widget弄的焦头烂额,到现在可以建立起Flutter的整体知识结构,整个过程实际上是非常痛苦的,这跟Flutter的设计思想有关——一切皆组件,这虽然是一个非常好的设计思路,但是茫茫多的Widget,会让开发者陷入泥潭无法自拔,很难建...原创 2020-02-19 14:03:44 · 1180 阅读 · 1 评论 -
Draw Text in Deep
Android系统提供了Textview来提供文字的显示,但很多时候开发者还需要使用Canvas来绘制Text,这时候,canvas.drawText()就不像Textview的使用这么简单了,需要掌握文字的测量以及渲染的流程。Paint.FontMetricsFontMetrics是文字测量的重要方法,它提供了下面这些变量,来展示文字测量的相关参数:baseline:字符绘制基线asc...原创 2019-12-11 09:44:38 · 1398 阅读 · 0 评论 -
Kotlin修炼指南(二):lambda表达式的精髓
lambda表达式是Kotlin函数式编程的一个重要概念,要想掌握函数式编程,就必须熟练掌握lambda表达式,并掌握它的各种写法和实现,这些都是掌握函数式编程的基础。lambda基本形式lambda表达式有三大特征:lambda表达式存在于{}中参数及参数类型(可省略)在->左边函数体在->右边lambda表达式返回值总是返回函数体内部最后一行表达式的值这三种形式的l...原创 2019-11-04 09:19:52 · 1746 阅读 · 1 评论 -
Notification使用详解
Notification和Toast一样,都是在android中起到通知和提醒的功能。但他们的使用原理完全不同,Toast是一个控件,使用new创建,而Notification是通过NotificationManager来管理的。显示效果如下:主程序:public class Main extends Activity implements OnClickListener{原创 2012-11-18 14:10:41 · 2100 阅读 · 0 评论 -
系统广播详解之开机自动运行程序
接收系统广播需要如下两步:1、编写一个继承BroadcastReceiver的类,并实现OnReceive方法,如果应用程序收到系统发送的广播,就会调用onReceive方法。2、在mainfirst中使用标签来指定1中编写的接收系统广播的类可以接收哪一个BroadcastAction下面以一个开机自动运行程序来讲解:1、编写一个BroadcastReceiver类publ原创 2012-12-05 21:54:39 · 1734 阅读 · 0 评论 -
系统广播详解之接收短信
上一次讲解了系统开机自动运行的广播,这次讲解系统广播中的SMS广播。1、编写一个系统广播接收类public class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { if ("android.provi原创 2012-12-05 22:07:47 · 1950 阅读 · 0 评论 -
系统广播详解之电池电量广播
在系统中,当前电池电量的广播如下:Intent.Action_Battery_Changed前两个使用系统广播的例子都是在mainfirst中配置receive。这次我们在程序中注册,同时使用匿名类来实现BroadcastReceiver。public class Main extends Activity{ private TextView tvBatteryChanged;原创 2012-12-05 22:15:37 · 3675 阅读 · 5 评论 -
系统服务详解之时间服务3
4、全局定时器:AlermManager全局定时器是与应用程序独立的系统时间服务,并不依赖应用程序而存在。该对象通过AlarmManage alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);获得。通过PendingIntent指定一个Activity,再通过setRepeating方法设置定时器原创 2012-12-12 21:38:21 · 1913 阅读 · 0 评论 -
系统服务详解之时间服务0
Android SDK中内置了多种时间服务,用于处理时间相关的操作。1、计时器:Chronometer组件这个组件可以以1秒为时间间隔进行计时。示例如下:public class Main extends Activity implements OnClickListener, OnChronometerTickListener{ private Chronometer c原创 2012-12-12 20:55:35 · 1662 阅读 · 0 评论 -
系统服务详解之时间服务1
2、Handler是处理定时操作的核心类。通过Handler可以提交和处理一个Runnable对象。该类通过3个方法来处理Runnable对象: 立即执行:post ;指定时间执行:postAtTime;指定的时间间隔:postDelayed因为该类处理对象为Runnable,所以在调用这3个方法之前,需要实现Runnable接口的run方法。publi原创 2012-12-12 21:01:25 · 1550 阅读 · 0 评论 -
系统服务详解之电话服务、音频服务
接听电话时,会显示两个状态:来点状态和接听状态。下面示例演示了如何使用电话服务。public class Main extends Activity{ public class MyPhoneCallListener extends PhoneStateListener { @Override public void onCallStateChanged(int state,原创 2012-12-12 20:48:14 · 1739 阅读 · 0 评论 -
系统服务详解之时间服务2
3、定时器:TimerTimer和Chronometer类似,但功能更加强大。Timer类通过schedule方法设置执行方式和时间,schedule方法的第一个参数为TimerTask,TimerTask类实现了Runnable接口,因此Timer实际上是在线程中执行run方法。虽然Timer和Handler的处理代码都放在run方法中,但Timer是在线程中执行run方法,Handle原创 2012-12-12 21:11:32 · 1586 阅读 · 0 评论 -
系统使用详解之传感器详解
本文讲解android中的传感器,这是智能手机中的一个重要组成方面。我们首先来讲解一下android手机中对坐标的定义:X轴的方向是沿着屏幕水平方向从左向右,较短的边需要水平放置,较长的变需要垂直放置Y轴的方向是从屏幕的左下角开始沿着屏幕的垂直方向指向屏幕的顶端Z轴是将手机平放在桌子上,从手机里指向天空传感器使用到一个values数组,他一般具有三个参数,参数的意义和传原创 2013-01-08 20:37:59 · 3458 阅读 · 0 评论 -
系统使用详解之日历控件
Android 3.0之上的版本提供了一个日历控件。本例将讲解该控件的使用方法。效果图如下:public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bu原创 2013-01-09 21:01:43 · 6766 阅读 · 0 评论 -
ListView详解5
五、本次要讲的是一个listview的进阶效果,主要实现的功能是,单击显示的item时,会显示出一个大图,以突出效果,即抽屉效果的ListView。效果如下所示:其主要实现思路是:在getView的时候,动态修改布局,将选中的item添加新的View,这样就做到了点击的时候,与其他的item不同的效果。代码如下:public class MainActivity extends原创 2012-10-29 19:41:55 · 2556 阅读 · 0 评论 -
SQLite详解0
1.SQLite简介SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎。它有如下特征:轻量级、独立性、隔离性、跨平台、多语言接口、安全性。SQLite数据库没有服务器进程。所有的内容包含在同一个单文件中。该文件是跨平台的,可以自由复制。基于其自身的先天优势,SQLite在嵌入式领域得到广泛应用。2.SQLite数据类型原创 2012-10-31 20:31:41 · 2477 阅读 · 0 评论 -
ListView详解3
三、SimpleAdapterSimpleAdapter可以自定义拓展listview。使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAda原创 2012-10-28 13:44:04 · 2369 阅读 · 0 评论 -
日历控件开发详解1
在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。三、日历元素之Border在Border类中,我们主要完成日历边框的绘制package com.xys.mycalender.element;import android.app.Activity;import android.graphics.Canvas;import android.view.原创 2013-01-10 21:56:22 · 3073 阅读 · 0 评论 -
自定义控件0
自定义控件的最简单方法就是继承这个控件。这次我们来重写一个TextView,让系统自带textview的左边加上一个图标。效果如下:实现方法:package com.xys.widget;import android.content.Context;import android.graphics.Bitmap;import android.graphic原创 2012-11-07 22:51:13 · 2091 阅读 · 0 评论 -
ListView详解4
四、BaseAdapterBaseAdapter是一个公共基类适配器,直接提供相关控件的数据提供。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fil原创 2012-10-28 14:05:18 · 2525 阅读 · 0 评论 -
TabHost详解0
一、TabHost是一个选项卡容器,通过标签页将多个Activity整合到一起。TabHost的三要素为:TabWidget、FrameLayout、List。其主要的使用方式有两种: 1.继承TabActivity,结合对应的xml配置文件导入tab选项内容体 2.继承Activity,结合拥有TabHost标签的xml配置文件导入第一种方式:<LinearLay原创 2012-11-01 21:35:55 · 2087 阅读 · 0 评论 -
ListView详解2
二、CursorAdapter通过游标获得数据后,在listview中显示结果。Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。 startManagingCursor(cursor);我原创 2012-10-28 13:18:54 · 2762 阅读 · 2 评论 -
ListView详解1
listview的显示需要三个元素:1.ListVeiw 用来展示列表的View。2.适配器 用来把数据映射到ListView上的中介。3.数据 具体的将被映射的字符串,图片,或者基本组件。根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter一、ArrayAdapter的lis原创 2012-10-28 12:41:01 · 3109 阅读 · 0 评论 -
ListView详解0
ListView常用方法总结1、listview拖动变黑解决方法在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你原创 2012-10-28 12:40:16 · 5108 阅读 · 1 评论 -
日历控件开发详解0
从今天开始,我们将一步步学习如何实现一个Android的日历控件,今天是第一天!一、准备工作之配置参数制作一个日历控件,我们首先要配置一些参数1.尺寸dimension.xml 10dp 48dp 10dp 18dp 5dp 15dp 11dp 15dp原创 2013-01-10 21:48:07 · 2636 阅读 · 0 评论 -
系统使用详解之拍照
在Android中调用摄像头进行拍照有两种方式,一种是使用系统的拍照Activity,另一种是使用Camera对象自己实现拍照功能一、调用系统拍照Activitypublic class Main extends Activity implements OnClickListener{ public ImageView imageView; private ImageView i原创 2013-01-08 20:01:21 · 2790 阅读 · 0 评论 -
drawText详解
Canvas 作为绘制文本时,是以基线为基准绘制的,不是左上角FontMetrics对象它以四个基本坐标为基准,分别为:・FontMetrics.top・FontMetrics.ascent・FontMetrics.descent・FontMetrics.bottomascent和top都为负数,因为向下为Y轴正方向示例:Paint textPa原创 2013-01-14 22:43:03 · 3898 阅读 · 0 评论 -
自定义时钟控件
通过继承View类,我们可以自定义自己需求的复杂控件。本例实现了一个自定义的时钟。效果如下:代码如下:package com.example.test;import java.util.Calendar;import android.content.Context;import android.graphics.Bitmap;import android.gra原创 2012-11-11 18:41:45 · 2304 阅读 · 0 评论 -
图像处理详解之MaskFilter
使用MaskFilterMaskFilter类可以为Paint分配边缘效果。对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换。Android包含了下面几种MaskFilter:BlurMaskFilter 指定了一个模糊的样式和半径来处理Paint的边缘。EmbossMaskFilter 指定了光源的方向和环境光强度来添加浮雕效果。原创 2012-12-20 11:36:48 · 3923 阅读 · 0 评论 -
通过占位符来动态获得字符串资源
一般情况下,我们可以在android中这样定义一个字符串资源:今天是%1$s,当前温度:%2$d.其中%1,%2……表示占位符,从1到n,$s表示字符串,$d表示十进制整数。在程序中使用时:tv.setText(getString(R.string.dymString,"星期1",20))这样讲参数传入。原创 2012-12-19 21:43:24 · 2127 阅读 · 0 评论 -
android长度单位详解
android中定义的dimension单位有以下这些:px(Pixels ,像素):对应屏幕上的实际像素点。in(Inches ,英寸):屏幕物理长度单位。mm(Millimeters ,毫米):屏幕物理长度单位。pt(Points ,磅):屏幕物理长度单位,1/72英寸。dp(与密度无关的像素):逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着原创 2012-12-17 19:42:40 · 1799 阅读 · 0 评论 -
图像处理详解之图像透明度
Android支持的颜色系统是RGB,Alpha最后的Alpha表示透明度,他的取值是0-255,。通过设置Alpha的值,我们可以改变图像的透明度。下面举例说明,效果图如下:public class MainActivity extends Activity implements OnSeekBarChangeListener{ public static in原创 2012-12-16 20:42:30 · 7180 阅读 · 0 评论 -
将一个Activity共享成一个Action供其他程序调用
假设我们现在写好了一个字典的程序,在输入框输入字母,就能显示他的英语翻译,现在我们将这个程序共享成一个Action,这样其他程序就可以通过调用这个Action来访问这个程序。字典程序的处理方法如下: if (getIntent().getData() != null) { String word = getIntent().getData(原创 2012-12-02 20:33:39 · 2131 阅读 · 0 评论 -
图像处理实例之绘图板
本例讲解了一个在图片上绘制路径的实例,绘制的路径可以选择普通、浮雕、喷涂三种效果。效果如下:下面是实现方法:public class Main extends Activity implements OnColorChangedListener{ private MyView myView; @Override protected void onCreate原创 2012-12-19 21:28:10 · 2387 阅读 · 1 评论 -
图像处理详解之颜色渐变效果
Android平台下实现渐变效果。在android.graphics中我们可以找到有关Gradient字样的类,比如LinearGradient 线性渐变、RadialGradient径向渐变和 角度渐变SweepGradient 三种,他们的基类为android.graphics.Shader。下面以SweepGradient渐变(角度渐变)为例讲解:public class Swe原创 2012-12-20 11:15:43 · 4232 阅读 · 1 评论 -
图像处理详解之图像旋转
图像旋转的基本思想是通过Matrix类的setRotate方法设置旋转的角度,然后使用Bitmap.createBitmap方法创建一个已经旋转了的图像。除此之外,还可以使用Canvas.setMatrix方法设置,并直接使用drawBitmap绘制。下面来实现一个旋转动画:实现方法如下:public class MainActivity extends Activ原创 2012-12-16 21:03:56 · 3808 阅读 · 0 评论 -
openFileOutput/openFileInput使用详解
openFileOutput/openFileInput和SharedPreferances相似,都是在指定的目录下建立文件。这个目录是data/data//files/目录下。使用方法如下: try { // 向文件写入内容 OutputStream os = openFileOutput("file.txt", Activity.MO原创 2012-11-19 22:41:08 · 6864 阅读 · 0 评论 -
SharedPreferences使用详解1
本次讲解SharedPreferences的封装类 PreferancesActivity。他提供了一些常用的设置项,如问询对话框、编辑框等。PreferancesActivity的显示效果如下:刚进入PreferancesActivity:点击 其他个人信息 :点击姓名:主程序:public class Main原创 2012-11-18 19:48:55 · 2367 阅读 · 0 评论