我已经使用不同的子活动实现了我的TabActivity:
intent = new Intent().setClass(this, MyChildTabActiviy.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = getTabHost.newTabSpec("tag").setIndicator("indicator", getResources().getDrawable(R.drawable.icon)).setContent(intent);
getTabHost.addTab(spec);
...
Run Code Online (Sandbox Code Playgroud)
到目前为止没有问题,一切都很好.我在选项卡之间以编程方式切换,用ActivityGroups替换选项卡中的活动等,正如许多教程中所示.
但我的问题是,当我想检查一个投掷手势时,我的gestureDetector.onTouchEvent(事件)总是返回false,因此没有注册任何手势.
这是我对gestureDetector的实现:
public class MyChildTabActiviy extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// ... building views, controls, etc.
GestureDetector gestureDetector = new GestureDetector(this, new MyGestureDetector());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { …
Run Code Online (Sandbox Code Playgroud) 好吧,这个主题已经并且仍然存在很多争论,我已经阅读了许多教程,提示并看到了有关它的讨论.但是当我达到某些行的复杂性时,我仍然遇到了为ListView实现自定义BaseAdapter的问题.所以我基本上拥有的是通过解析来自网络的xml获得的一些实体.另外我获取一些图像等等,所有这些都是在AsyncTask中完成的.我在getView()方法中使用性能优化的ViewHandler方法,并按照每个人的建议重用convertView.即我希望我正在使用ListView,因为它只是显示单个ImageView和两个TextViews,它们使用SpannableStringBuilder进行样式化(我不使用任何HTML.fromHTML)它真的很好用.
现在来了.每当我使用多个小型ImageView,一个Button以及一些使用SpannableStringBuilder进行不同样式设置的TextView扩展行布局时,我都会获得停止滚动的性能.该行包含一个RelativeLayout作为父级,所有其他元素都使用布局参数排列,因此我的布局不能使该行更简单.我必须承认,我从未见过任何包含许多UI元素的行的ListView实现示例.
但是,当我在ScrollView中使用TableLayout并使用AsyncTask(通过onProgressUpdate()稳定添加新行)手动填充它时,即使其中有数百行,它也表现得非常流畅.如果滚动到列表末尾,添加新行时会稍微绊倒一下.否则它比ListView更平滑,它在滚动时总是绊倒.
当ListView不想表现好时,有什么建议吗?我应该继续使用TableLayout方法还是建议使用ListView来优化性能?
这是我的适配器的实现:
protected class BlogsSeparatorAdapter extends BaseAdapter {
private LayoutInflater inflater;
private final int SEPERATOR = 0;
private final int BLOGELEMENT = 1;
public BlogsSeparatorAdapter(Context context) {
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return blogs.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
int type = BLOGELEMENT;
if (position == 0) {
type = SEPERATOR;
} else if …
Run Code Online (Sandbox Code Playgroud) performance android tablelayout android-listview baseadapter