Android 는 Fragment 를 사용 하여 위 챗 인터페이스의 인 스 턴 스 코드 를 모방 합 니 다.

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 를 사용 하여 위 챗 인터페이스의 인 스 턴 스 코드 를 모방 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기