我正在使用片段 . 当我添加视图时,工作非常慢 . (Imageview,RelativeLayout vsvs) . 但我的应用程序在某些设备上运行良好 . 像棒棒糖 . 我怎么解决这个问题 ?
代码:`@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle 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);
}
}
1 回答
也许你的视图中有一些大图像 . 确保片段中没有任何大型高分辨率位图或可绘制资源