2017-11-18 14 views
0

フラグメントを使用しています。私はビューを追加すると非常に遅く動作します。 (Imageview、RelativeLayout vsvs)。 しかし、私のアプリケーションは一部のデバイスでうまく動作します。ロリポップのように。 どうすればこの問題を解決できますか?ロード中に断片化が非常に遅くなる

コード: `@Override パブリックビューonCreateView(LayoutInflaterのインフレータ、のViewGroupコンテナ、バンドルsavedInstanceState){

 view = inflater.inflate(R.layout.words,container, false); 

    searchLayout=(RelativeLayout)view.findViewById(R.id.searchLayout); 
    boxLayout=(RelativeLayout)getActivity().findViewById(R.id.boxSearch); 
    mainlayout=(RelativeLayout)getActivity().findViewById(R.id.mainLayout); 
    mainsearch=(RelativeLayout)getActivity().findViewById(R.id.mainsearch); 
    horizontalScrollView=(HorizontalScrollView)view.findViewById(R.id.hS); 

    searchText=(EditText)getActivity().findViewById(R.id.searchText); 
    back=(ImageView)getActivity().findViewById(R.id.backbutton); 

    listplace=(RelativeLayout)view.findViewById(R.id.listplace); 
    frameLayout = (FrameLayout)view.findViewById(R.id.frame1); 
    frameLayout.setVisibility(View.GONE); 
    linearLayout=(RelativeLayout)view.findViewById(R.id.linear); 


    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)listplace.getLayoutParams(); 
    params.height= Resources.getSystem().getDisplayMetrics().widthPixels/2; 
    params.width=Resources.getSystem().getDisplayMetrics().widthPixels; 
    listplace.setLayoutParams(params); 

    w=listplace.getLayoutParams().width/3; 
    h=listplace.getLayoutParams().height/2; 

    preference= PreferenceManager.getDefaultSharedPreferences(getActivity()); 

    int t=0; 
    int p=0; 
    while(t<=48) 
    { 

     addList(t); 

     t++; 

    } 



    searchLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

    searchLayout.setOnTouchListener(new View.OnTouchListener() { 
     @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       enterReveal((int)event.getX(),(int)event.getY()); 



      } 

      return false; 
     } 
    }); 






    return view; 
} 
@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
void enterReveal(int x , int y) { 


    int finalRadius = Math.max(searchLayout.getWidth()+searchLayout.getWidth()/4, searchLayout.getHeight())/2; 
    Animator anim =ViewAnimationUtils.createCircularReveal(frameLayout, x, y, 0, finalRadius); 
    anim.addListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationStart(Animator animation) { 
      frameLayout.setVisibility(View.VISIBLE); 

     } 

     @Override 
     public void onAnimationEnd(Animator animation) { 
      frameLayout.setVisibility(View.GONE); 
      longClick=false; 
      mainsearch.setVisibility(View.VISIBLE); 
      mainlayout.setTranslationZ(-5.0f); 
      boxLayout.setClickable(true); 
      searchText.requestFocus(); 
      InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
      imgr.showSoftInput(searchText, InputMethodManager.SHOW_IMPLICIT); 


     } 

     @Override 
     public void onAnimationCancel(Animator animation) { 
      longClick=false; 

     } 

     @Override 
     public void onAnimationRepeat(Animator animation) { 

     } 
    }); 

    //anim.setDuration(450); 
    anim.start(); 
} 

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
public void addList(int id) 
{ 
    ImageView img; 
    img=new ImageView(getContext()); 
    img.setId(id); 
    img.setElevation(5.0f); 
    img.setImageResource(R.drawable.add); 
    img.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    img.setAdjustViewBounds(true); 
    RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(w, h); 
    layoutParams.setMargins(0-w/5,w/6,0,0); 
    if(id!=0) 
    { 
     layoutParams.setMargins(0-w/5,w/6,0,0); 
     layoutParams.addRule(RelativeLayout.RIGHT_OF,id-1); 
    } 
    img.setLayoutParams(layoutParams); 
    linearLayout.addView(img); 


} 




} 

答えて

0

多分あなたはあなたのビューでいくつかの大規模なイメージを持っています。フラグメント内に大規模で高解像度のビットマップや描画可能なリソースがないことを確認してください

+0

あなたは正しいですか?ありがとうございました –

+0

幸せなコーディング:)答えを受け入れてください –

関連する問題