تدير وحدة التحكم في العرض مجموعة من المشاهدات التي تشكل جزءًا من واجهة مستخدم التطبيق الخاصة بك ، فهي تهدف إلى جعل واجهة المستخدم تطوير تغيير أكثر وضوحًا ومرونة.
الإنجليزية | 中文 | Android 复杂界面开发实践之 ViewController: 介绍
كممارسة جيدة ، أوصيك بتشغيل أو مشاهدة الرمز التجريبي مباشرة.
يمكنك استيراد ملف التبعية أو نسخ ملف المصدر إلى مشروعك مباشرة ، حتى الآن ، ملف واحد فقط في هذا lib.
أضف مستودع jitpack إلى ملف الإنشاء الخاص بك
allprojects {
repositories {
.. .
maven { url " https://jitpack.io " }
}
}أضف التبعية
dependencies {
compile ' com.github.maoruibin:ViewController:0.9.1 '
}تمامًا مثل هذه الصورة التجريبية ، يجب أن نطور أربعة مكونات.
الآن أرغب في تطوير مكون التعليقات كعرض تجريبي ، وسأقدم نقطة شرح الرمز.
// 1、every component mast extends ViewController
public class HouseCommentViewController extends ViewController < List < String >>
// 2、indicate layout id for this component
@ Override
protected int resLayoutId () {
return R . layout . detail_comment_layout ;
}
// init this component's view element
@ Override
protected void onCreatedView ( View view ) {
mLlContainer = view . findViewById ( R . id . ll_container );
...
}
// bind data to this view component
@ Override
protected void onBindView ( List < String > comments ) {
for ( String comment : comments ) {
TextView view = new TextView ( getContext ());
view . setBackgroundResource ( R . color . bk_item );
view . setText ( comment );
int padding = Utils . dp2px ( 16 );
view . setPadding ( padding , padding , padding , padding );
mLlContainer . addView ( view );
}
}الآن ، لقد أنهينا مكون عرض بسيط ، ويمكنك مشاهدة المكونات اليسرى تنفيذها بواسطة الرمز التجريبي.
لقد انتهينا من أربعة مكونات للحصول على تفاصيل المنزل واجهة المستخدم.
HousePhotoViewController //House picture component
HouseParamViewController //House param info component
HouseDescViewController //House description component
HouseCommentViewController //House comment componentالمهمة اليسرى هي تجميع. جوهر التجميع هو
تدعم كل وحدة تحكم عرض طريقة لإرفاق عرض المالك بتخطيط الجذر ، لذلك يجب أن يكون للنشاط تخطيط الجذر لملء جميع المشاهدات.
رمز Java مثل هذا
// 1、define ViewController instance
private ViewController < List < String >> mHousePhotoViewController ;
private ViewController < HouseDetail . Param > mHouseParamViewController ;
private ViewController < List < String >> mHouseCommentViewController ;
private ViewController < String > mHouseDescViewController ;
// 2、init instance
mHousePhotoViewController = new HousePhotoViewController ( this );
mHouseParamViewController = new HouseParamViewController ( this );
mHouseDescViewController = new HouseDescViewController ( this );
mHouseCommentViewController = new HouseCommentViewController ( this );
// 3、attach view controller to activity root, usually the best choose for root is a vertical LinearLayout.
mHousePhotoViewController . attachRoot ( mLlContainer );
mHouseParamViewControler . attachRoot ( mLlContainer );
mHouseDescViewControler . attachRoot ( mLlContainer );
mHouseCommentViewControler . attachRoot ( mLlContainer );
// 4 、mock get data
getData ();
// 5、fill data to UI
fillData ();
// 6、fill data to different view controller
private void fillData ( HouseDetail detail ) {
mHousePhotoViewController . fillData ( detail . photos );
mHouseParamViewController . fillData ( detail . param );
mHouseDescViewController . fillData ( detail . desc );
mHouseCommentViewController . fillData ( detail . comments );
}والآن ، قام واجهة المستخدم المعقدة بتقسيم أربعة مكونات ، بهذه الطريقة ، كل مكونات تتعامل فقط مع منطق المالك.
وإذا كان لدى نشاط أو جزء آخر من الحاجة إلى تنفيذ مكون ، فيمكنك إعادة استخدام التعليمات البرمجية مباشرة ، لطيفة!
http://gudong.name
https://github.com/maoruibin
Copyright 2016 咕咚
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.