Android 는 Fragment 를 사용 하여 위 챗 인터페이스의 인 스 턴 스 코드 를 모방 합 니 다.
Android 3.0 에서 fragments 라 는 개념 을 도입 한 후부 터 단어의 번역 에 따라 조각,부분 으로 번역 할 수 있 습 니 다.화면 별 변별력 의 움직임 과 유연 한 UI 디자인 을 해결 하기 위해 서다.대형 스크린,예 를 들 어 태 블 릿 작은 스크린,예 를 들 어 핸드폰,태 블 릿 PC 의 디자인 으로 인해 더 많은 UI 구성 요 소 를 넣 을 수 있 고 더 많은 공간 에 UI 를 저장 하면 더 많은 상호작용 을 할 수 있어 fragments 가 탄생 했다.
fragments 의 디자인 은 view hierarchy 의 복잡 한 변 화 를 직접 관리 할 필요 가 없습니다.Activity 의 레이아웃 을 frament 에 분산 시 켜 서 실행 할 때 activity 의 외관 을 수정 하고 activity 가 관리 하 는 back stack 에 변 화 를 저장 할 수 있 습 니 다.한 세 션 이 자신의 레이아웃 을 지정 할 때 다른 세 션 과 다른 조합 으로 설정 할 수 있 습 니 다.활동 중 에 서로 다른 화면 크기 로 레이아웃 설정 을 수정 할 수 있 습 니 다.(작은 화면 은 한 세 션 을 표시 할 때마다 큰 화면 은 두 개 이상 을 표시 할 수 있 습 니 다)
Fragment 는 다시 사용 할 수 있 는 모듈 로 써 야 합 니 다.fragment 는 자신의 layot 가 있 기 때문에 스스로 이벤트 응답 을 하고 자신의 수명 주기 와 행 위 를 가지 기 때문에 여러 activity 에 같은 Fragment 의 다른 인 스 턴 스 를 포함 할 수 있 습 니 다.이것 은 화면 크기 에 따라 사용자 에 게 완벽 한 체험 을 할 수 있 도록 하 는 데 특히 중요 하 다.
프 래 그 먼 트 장점
Fragment 는 activity 를 여러 개의 재 활용 가능 한 구성 요소 로 분리 할 수 있 습 니 다.각각 수명 주기 와 UI 가 있 습 니 다.
Fragment 는 동적 이 고 유연 한 UI 디자인 을 쉽게 만 들 수 있 으 며 다양한 화면 크기 에 적응 할 수 있 습 니 다.핸드폰 에서 태 블 릿 PC 까지.
Fragment 는 activity 와 단단히 연 결 된 독립 된 모듈 입 니 다.실행 중 동적 제거,가입,교환 등 이 가능 합 니 다.
Fragment 는 다양한 안 드 로 이 드 장치 에서 UI 를 통일 할 수 있 는 새로운 방식 을 제공 합 니 다.
Fragment 는 Activity 간 전환 이 원활 하지 않 고 경 량 전환 을 해결 합 니 다.
TabActivity 대신 Fragment 를 내 비게 이 션 하면 성능 이 더 좋 습 니 다.
Fragment 는 4.2.버 전에 fragment 사용 방법 을 추가 하여 더 좋 은 인터페이스 효 과 를 생 성 할 수 있 습 니 다.
Fragment 는 부분 적 인 내용 을 업데이트 하 는 것 이 더 편리 합 니 다.원래 이 점 에 도달 하기 위해 여러 개의 구 조 를 하나의 activity 에 넣 어야 했 는데 지금 은 여러 Fragment 로 대체 할 수 있 습 니 다.필요 할 때 만 Fragment 를 불 러 와 성능 을 향상 시 킬 수 있 습 니 다.
startActivity ForResult 에서 결 과 를 되 돌려 받 을 수 있 지만 View 는 안 됩 니 다.
그림 에서 실례 적 인 효 과 를 보 여 줍 니 다.아래 단 추 를 누 르 면 상반부 가 자동 으로 대응 하 는 내용 으로 전 환 됩 니 다.여기 서 사용 하 는 기술 은 fragment 입 니 다.
모두 가 fragment 에 대해 이미 알 고 있 을 것 입 니 다.잘 모 르 더 라 도 바 이 두 는 상세 한 소 개 를 하고 있 습 니 다.여기 서 실현 과정 을 중점적으로 소개 하 다.
우선,그 중의 한 부분 인'첫 페이지'를 가지 고 말한다.
위의 일부분 은 fragment 이 고,아래 는 상대 적 으로 고정된 단추 구역 입 니 다.버튼 을 눌 렀 을 때 전반부 만 전환 한 것 이다.그래서 모든 fragment 에는 xml 레이아웃 파일 이 있 습 니 다.그림 에서 보 듯 이'첫 페이지'라 는 fragment 의 xml 파일 은 하나의 textview 로 구성 되 어 있 습 니 다.
fragment 의 xml 파일 을 완성 한 후에 대응 하 는 자바 류 를 정의 하여 찾 아야 합 니 다.예 를 들 어 첫 페이지 에 대응 하 는 종 류 는 homeFragment.자바 입 니 다.이 종 류 는 fragment 를 계승 해 야 하 며,이러한 fragment 를 계승 하 는 모든 종 류 는 onCreateView 의 방법 을 다시 써 야 합 니 다.구체 적 인 코드 는:
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.cerian.marcon.R;
/**
* Created by Cerian on 2017/7/9.
*/
public class homeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_home, null);
// view.
return view;
}
}
이 단계 에 이 르 렀 을 때,모든 fragment 의 내용 은 이미 완성 되 었 다.다음은 모든 fragment 를 한 페이지 와 연결 하여 표시 하 는 것 입 니 다.여기 메뉴 function.xml 을 사 용 했 습 니 다.코드 는:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/rl_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:showDividers="beginning|end|middle"
android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<ImageView
android:id="@+id/ig_home"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/homepage1"/>
<ImageView
android:id="@+id/ig_lib"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/library1"/>
<ImageView
android:id="@+id/ig_my"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/my1"/>
</LinearLayout>
</RelativeLayout>
이 레이아웃 에서 위의 LinearLayout 는 fragment 내용 을 표시 하 는 데 사 용 됩 니 다.아래 는 단추 입 니 다.그리고 이 menufunction.xml 에 대응 하 는 자바 클래스 에서 정 의 된 fragment 를 찾 아 표시 합 니 다.주요 사상 은 ① 관리자 ② 를 받 아 하나의 사 무 를 시작 하 는 ③ fragment 내용 ④ 를 교체 하여 제출 하 는 것 이다.여기 서 네 번 째 단 계 는 잊 혀 지기 쉽다.
코드 는:
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import com.example.cerian.marcon.fragment.homeFragment;
import com.example.cerian.marcon.fragment.libFragment;
import com.example.cerian.marcon.fragment.myFragment;
/**
* Created by Cerian on 2017/7/9.
*/
public class home extends AppCompatActivity implements View.OnClickListener {
private ImageView ig_home, ig_lib, ig_my;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menufunction);
ig_home = (ImageView) findViewById(R.id.ig_home);
ig_lib = (ImageView) findViewById(R.id.ig_lib);
ig_my = (ImageView) findViewById(R.id.ig_my);
ig_home.setOnClickListener(this);
ig_lib.setOnClickListener(this);
ig_my.setOnClickListener(this);
/**
* :
* :
* :
* :
*/
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.replace(R.id.ll_layout, new homeFragment());
ig_home.setImageResource(R.mipmap.homepage2);
beginTransaction.commit();
}
@Override
public void onClick(View view) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
switch (view.getId()) {
case R.id.ig_home: //
beginTransaction.replace(R.id.ll_layout, new homeFragment());
ig_home.setImageResource(R.mipmap.homepage2);
ig_my.setImageResource(R.mipmap.my1);
ig_lib.setImageResource(R.mipmap.library1);
break;
case R.id.ig_lib: //
beginTransaction.replace(R.id.ll_layout, new libFragment());
ig_home.setImageResource(R.mipmap.homepage1);
ig_my.setImageResource(R.mipmap.my1);
ig_lib.setImageResource(R.mipmap.library2);
break;
case R.id.ig_my: //
beginTransaction.replace(R.id.ll_layout, new myFragment());
ig_home.setImageResource(R.mipmap.homepage1);
ig_my.setImageResource(R.mipmap.my2);
ig_lib.setImageResource(R.mipmap.library1);
break;
}
beginTransaction.commit();
}
}
그 중에서 관련 된 클릭 이벤트 가 많 고 비슷 하기 때문에 저 는 특수 한 쓰기,즉 setonclicklistener(this)를 사 용 했 습 니 다.매개 변 수 는 this 를 사 용 했 고 click 방법 을 다시 정 의 했 습 니 다.메모:이렇게 쓰 려 면 clicklistener 의 인 터 페 이 스 를 계승 해 야 합 니 다.마지막 으로 제출 하면 ok.
효 과 는:
이것 이 바로 fragment 를 이용 하여 위 챗 인터페이스 를 모 의 하 는 것 이다.
위 에서 말 한 것 은 소 편 이 소개 한 안 드 로 이 드 가 Fragment 를 사용 하여 위 챗 인터페이스의 인 스 턴 스 코드 를 모방 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.