使用Kotlin&Anko, 扔掉XML开发Android应用

  • 时间:
  • 浏览:1
  • 来源:uu快3概率_uu快3官网pk10_平台

调用targetFragmentonActivityResult()法律方式来回传日期数据。

来八个 列子看一下。为了不太墨迹,你这些 暂且要的xml声明此处略去。

首先DatePickerFragment要继承DialogFragment原本override法律方式onCreateDialog(savedInstanceState: Bundle)。在你这些 法律方式里使用后边代码创建八个 含晒 日期选则器的dialog。

首先,安装八个 Kotlin的插件是前要的。有了你这些 插件不能没人使用Kotlin,或者不能没人使用Anko。安装你这些 插件和Android Studio里安装别的插件市一样的。只前要使用Kotlin查找就能没人找到,原本安装即可。

尝鲜使用Kotlin写了一段时间Android。说大幅度的减少了Java代码你这些 不夸张。用Java的原本动不动就new八个 OnClickListener()匿名类,动不动就类型转换的地方都能没人省下所以。更暂且特殊的地方使用data class更是少些不知道有几次代码。

前要注意打星号的地方。按钮在点击原本会弹出八个 dialog fragment来显示日期view。用户能没人在你这些 日期view里选则相应的日期。或者,如何从日期dialog fragment传递选则的日期给DetailFragment呢?这里就涉及到八个 fragment之间传递数据的疑问图片。

现在有没人八个 HTML类,没人调用的原本能没人原本:

欢迎加群互相学习,同时进步。QQ群:iOS: 55099570 | Android: 350987132 | Go:217696290 | Python:336850185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/550505.html

全文不能没人在这里画上八个 句点了。以上还有所以关于Anko没人使用的地方。Anko也是能没人实现代码界面分离的。继承AnkoComponent能没人写出独立的布局文件,或者能没人用anko preview插件来预览界面效果。就拿setting你这些 tab的fragment来举例:

首先定义八个 独立的布局文件:

上文第4点用到了weightTextView。这是八个 自定义的view。在Anko布局中,能没人根据买车人的前要自定义各种各样的view。或者,前要经过八个 小小的外理原本不能没人使用到Anko的布局中。你这些 小小的外理就叫做扩展。下面看看如何给Anko去掉 weightTextView扩展的。

现在就创建你这些 listview,并在listview的item点击原本调转到相应的activity去。

你这些 listview非常简单,只在八个 竖直的布局放在置,或者角度和角度都不 填满竖直

布局。

HomeListFragment类作为第八个 tab内容展示fragment,用来显示全版的日记列表的布局就非常简单了,和我们都前面的例子没人哪有几次没人来越多的差别。很久在八个 verticalLayout里放八个 list view。你这些 list view的data source只前要八个 列表。

或者sync一把。配置的疑问图片外理。

在标星下面的一行代码中。datePicker.setTargetFragment(this@DetailFragment,DetailFragment.REQUEST_DATE)DetailFragment设定为target fragment,或者指定REQUEST_DATE这code,为原本取出数据使用。

这每段涉及到的语法内容能没人参考官网。

这里简单介绍一下。拿官网的例子说一下:

热身结速了。我们都来结速了了真正的开发阶段。

另外,在java写的原本常用的findViewById()法律方式在Kotlin和Anko中能没人改为的find<FrameLayout>(ID_FRAMELAYOUT)。不见得简单,或者增加了类型安全。我没人多 再强制类型转换。很久用担心相关的错误再发生。

或者你这些 布局还能没人用在我们都原本创建的TempActivity上:

现在就从你这些 托管activity:TabDemo1结速了了。这里我们都不使用默认的ActionBar,很久用全版自定义的法律方式来写八个 我们都买车人的action bar。所以前要把界面设定为全屏模式。设置全屏的模式的法律方式有所以,我们都用设置style的法律方式来实现。

这里前要注意gravity = Gravity.CENTER_HORIZONTAL or Gravity.CENTER_VERTICAL

能没人直接写成gravity = Gravity.CENTER。这里是为了突出or的用法。Kotlin里的or

很久java的|操作符的作用。

选则日期的dialog fragment是DatePickerFragment

我们都来看一下你这些 布局应该为什写:

原本把你这些 style应用在activity在AndroidManifest.xml配置中。

真是灰常的简单呢。在法律方式html()里,参数是八个 HTML类的扩展法律方式,或者此法律方式无参,返回Unit(java的void)。

没人为什发送呢?使用target fargment法律方式。在detail fragment弹出dialog fragment的原本,把detail fragment设置为target fragment。

首先创建八个 ListView的item点击原本跳转的activity。这里叫做TabDemo1

Jetbrains给Android带来的不仅是Kotlin,还有Anko。从Anko的官方说明来看这是八个 雄心勃勃的要代替XML写Layout的新的开发法律方式。Anko最重要的你这些 是引入了DSL(Domain Specific Language)的法律方式开发Android界面布局。当然,本质是代码实现布局。不过使用Anko全版我没人多 经历Java纯代码写Android的痛苦。不可能 一种生活是来自Kotlin的,所以自然的使用你这些 法律方式开发就具有了:

本文中的重点在于使用Anko做布局,具体的逻辑外理java写和Kotlin写没人哪有几次区别。这里只简单介绍一下。

每八个 tab项被点击的原本的外理:

下面看看如何扩展Anko,来使用我们都后边的自定义view。

在positive按钮点击原本执行法律方式sendResult回传数据

在选则日期的原本,会触发DatePickerOnDateChangedListener接口的onDateChanged法律方式。我们都在你这些 法律方式里记录选则好的日期数据,在dialog的positive按钮点击原本把你这些 数据发送给DetailFragment

所以布局上就包括日记的title、内容输入用的EditText以及为了说明用的text view,还有edit text里的hint。最后还有八个 选则

日期的控件。

下面要开发的是八个 日记App。一共八个 tab,第八个 是日记列表,第八个tab是写日记,第八个 tab能没人设置你这些 字体大小等(这里只用来占位,不做实现)。

为了帮助理解,这里给出八个 参数是法律方式的法律方式:

这里是自定义action bar。使用换八个 linearLayout。如前所述,要横向布局linear layout

就前要单独的指定orientation:orientation =LinearLayout.HORIZONTAL。这里比较简单,没人八个 显示title的text view。

Activity上使用就简单所以了,只前要没人一句SettingsUI<TempActivity>().setContentView(this)

为了保证兼容,这里使用Support v4来外理Fragment的显示等操作。在activity的一结速了了就把前要的fragemnt都加载进来。

日记的内容包括,日记title,日记一种生活的内容还有日记的日期。

附加解释:

法律方式setSelected()是被迫去掉 的。在使用Anko,大约 使用代码开发Android布局的原本selector不起作用。只好把点击后的高亮效果写在自定义的text view里。

在法律方式执行的过程中,首先初始化了HTML。原本调用了你这些 作为参数传入的扩展法律方式。在具体调用html()法律方式的原本,能没人只简单写八个 lambda表达式作为传入的HTML扩展法律方式。既然是八个 类的扩展法律方式,那当然能没人调用你这些 类组织组织结构的法律方式了。

代码在这里。除了布局Anko还有你这些 的你这些 语法糖糖也很是不错,不过这里就没人来越多说了。有更多想了解的,请移步官网。

build.gradle里去掉 下面的代码:

在结速了了原本前要考虑八个 很严重的事情:数据发生哪有几次地方。原本应该是SQLite不可能 发生云上的。发生云裳就能没人实现同八个 账号登录在任何地方都能没人同步到同样的内容。这里只简单模拟,存放在去app的内存里。存放在去Application派生类AnkoApplication

静态属性diaryDataSource里。diaryDataSource是八个 ArrayList一样的列表。

每八个 tab都用八个 Fragment来展示内容。这八个 tab分别HomeListFragmentDetailFragment,DiarySettingsFragment。你这些 八个 fragment都不 八个 叫做TabDemo1的托管Activity里。

首先自定义八个 view:WeightTextView

DetailFragment中通过override法律方式onActivityResult()来接收数据。

把你这些 布局文件用在DiarySettingsFragment上:

分别解释:

日期数据传输这每段到这里结速了。

你这些 原本你这些 托管activity的界面布局很久八个 全版的白板了。你这些 白板现在要分为上中下三每段。上部为我们都自定义的action bar,最下面的是tab bar,剩下的每段很久每个tab的内容的fragment。

第八个 是用lambda表达式作为传入法律方式,第八个是不可能 定义好的八个 法律方式作为传入法律方式。

在没人八个 lambda表达式里就能没人直接原本调用HTML类的法律方式了,后边的过程是为什样的呢

每八个 tab的内容展示用fragment很久这里了。准确的说是fragment的container。

你这些 container是八个 framelayout。在action bar之下,在tab bar之上。在布局的原本有below(ID_TOP_BAR), above(ID_BOTTOM_TAB_BAR)ID_TOP_BARID_BOTTOM_TAB_BAR就分别是action bar和tab bar的id值。哪有几次id值自由设定。