我有一些片段,其中的內部視圖動態膨脹,並添加到一個linearlayout類似於列表視圖的形式排序。這在高端設備上工作得很好,但在中下級設備中,動畫中有非常明顯的滯後,有時動畫會被完全跳過。我嘗試了一下google搜索,並沒有遇到任何具體的事情,當涉及到過渡動畫相關的膨脹意見和提示如何處理動態視圖通脹在這樣一個過程中。Android - 查看通貨膨脹彌補碎片交易動畫
所以回顧....用戶按下按鈕,片段進入視圖,視圖動態膨脹,動畫滯後或跳過。如果可能的話,我真的很想讓一切順利。
編輯:一些示例代碼
public static void addPersonRow(PersonObject po){
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 50);
params.setMargins(0, 5, 0, 5);
final View view = IncidentReport_v2.ir2.getLayoutInflater().inflate(R.layout.ir_involved_people_row, null);
view.setLayoutParams(params);
view.setTag(po.originalName);
RelativeLayout rl = (RelativeLayout) view.findViewById(R.id.ir_involved_ppl_add_row_rl);
TextView name = (TextView) view.findViewById(R.id.ir_involved_ppl_name_txt);
name.setText(po.firstName+" "+po.lastName);
ImageButton open = (ImageButton) view.findViewById(R.id.ir_involved_ppl_reopen_btn);
Bundle b = new Bundle();
b.putParcelable("personObj", po);
open.setTag(b);
name.setTag(b);
rl.setTag(b);
OnClickListener openClick = new OnClickListener() {
@Override
public void onClick(View v) {
pplAddFrag = new IR_PeopleInvolved_AddForm_Fragment();
Bundle b = new Bundle();
b.putParcelable("existingPerson", (Bundle)v.getTag());
pplAddFrag.setArguments(b);
android.support.v4.app.FragmentManager fragmentManager = IncidentReport_v2.ir2.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.bounce, R.anim.bounce_out, R.anim.bounce, R.anim.bounce_out);
fragmentTransaction.add(R.id.ir_main_frame, pplAddFrag, "pplAddFrag");
fragmentTransaction.addToBackStack("pplAddFrag");
fragmentTransaction.commit();
IncidentReport_v2.theMenu.removeItem(R.id.incident_report_save);
IncidentReport_v2.ir2.invalidateOptionsMenu();
}
};
open.setOnClickListener(openClick);
name.setOnClickListener(openClick);
rl.setOnClickListener(openClick);
ImageButton delete = (ImageButton) view.findViewById(R.id.ir_involved_ppl_delete_btn);
delete.setTag(po);
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pplHolder.removeView(view);
IncidentReport_v2.people.remove((PersonObject)v.getTag());
IR_InvolvedFragment.pplCounterTxt.setText(IncidentReport_v2.people.size()+"");
}
});
pplHolder.addView(view);
if(!IncidentReport_v2.people.contains(po)){
IncidentReport_v2.people.add(po);
}
IR_InvolvedFragment.pplTxt.setTextColor(IncidentReport_v2.ir2.getResources().getColor(R.color.green));
IR_InvolvedFragment.pplCounterTxt.setText(IncidentReport_v2.people.size()+"");
}
調用此方法的內部for循環依賴於有多少personObjects有
我們... ...需要的代碼。你沒有回顧任何事情,因爲沒有代碼來重述! – Blundell
不好意思把它砍了一下,但那基本上是我在片段轉換/交易時做的事情 –