14年10月写了个关于DOTA2想法的Demo,一部分是自己总结一些开发知识,一部分是对这样的创意进行实践。可惜事与愿违,未能坚持下来,又不想所做劳动丢之一弃,特此写此博客拿出来供新入行的同仁学习和借鉴,不足之处很多,废话不多说,上图
引导页-自定义的Viewpager
2个主要文件,自定义ViewPagerCompat和自定义切换动画RotateDownPageTransformer
首先布局xml文件很简单
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.Do2.android.widget.ViewPagerCompat
android:id="@+id/id_viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
然后在引导页中主要逻辑代码为
mViewPager = (ViewPagerCompat) findViewById(R.id.id_viewpager);
mViewPager.setPageTransformer(true, new RotateDownPageTransformer());
mViewPager.setAdapter(new PagerAdapter()
{
@Override
public Object instantiateItem(ViewGroup container, int position)
{
container.addView(mViews.get(position));
return mViews.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object)
{
container.removeView(mViews.get(position));
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == object;
}
@Override
public int getCount()
{
return mViews.size();
}
});
同样该ViewpagerCompat可以设置setOnPageChangeListener监听切换事件,在onPageSelected中进行切换后的逻辑处理。
上拉加载下拉更多Listview
滑动该listview会有滑动动画,头部下拉形式可以更改,加载更多也可以更改
主要文件8个,分别在zrc.util和zrc.widget文件夹中,在attrs中有个样式设置文件
首先还是布局文件,引用该自定义Listview
<zrc.widget.ZrcListView
android:id="@+id/chat_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-2dp"
>
</zrc.widget.ZrcListView>
然后初始化该自定义Listview
private void initListView(){
handler = new Handler();
// 设置默认偏移量,主要用于实现透明标题栏功能。(可选)
float density = getActivity().getResources().getDisplayMetrics().density;
listView.setFirstTopOffset((int) (50 * density));
// 设置下拉刷新的样式(可选,但如果没有Header则无法下拉刷新)
SimpleHeader header = new SimpleHeader(getActivity());
header.setTextColor(getResources().getColor(R.color.black_f2));
header.setCircleColor(getResources().getColor(R.color.black_f2));
listView.setHeadable(header);
// 设置加载更多的样式(可选)
SimpleFooter footer = new SimpleFooter(getActivity());
footer.setCircleColor(0xff33bbee);
listView.setFootable(footer);
// 设置列表项出现动画(可选)
listView.setItemAnimForTopIn(R.anim.topitem_in);
listView.setItemAnimForBottomIn(R.anim.bottomitem_in);
// 下拉刷新事件回调(可选)
listView.setOnRefreshStartListener(new OnStartListener() {
@Override
public void onStart() {
refresh();
}
});
// 加载更多事件回调(可选)
listView.setOnLoadMoreStartListener(new OnStartListener() {
@Override
public void onStart() {
loadMore();
}
});
}
然后设置适配器
private void init(){
initListView();
adapter = new ChatUserAdapter(getActivity(), requestChatResult());
listView.setAdapter(adapter);
}
其他模块
不足之处非常多,虚心接受批评- -。