开源框架02(PullToRefresh;PinnedHeaderListView;PhotoView;CustomShapeImageView;ormlite)
2016-12-31 00:20
525 查看
开源框架02
PullToRefresh:强大的下拉刷新库,作者是ChrisBane(可选)网址:https://github.com/chrisbanes/Android-PullToRefresh
PinnedHeaderListView:优秀的条目分割顶部固定效果
网址:https://github.com/beworker/pinned-section-listview
PhotoView:强大的图片跟随手势进行缩放移动的类库,作者是ChrisBane
网址:https://github.com/chrisbanes/PhotoView
CustomShapeImageView:强大的自定义形状的ImageView
网址:https://github.com/MostafaGazar/CustomShapeImageView
MPAndroidChart:强大的图表用于数据统计展示的类库(可选)
网址:https://github.com/PhilJay/MPAndroidChart
ormlite数据库 需要依赖俩个jar包 用注解
网址: http://ormlite.com/
1.GirdView使用 表格布局
GirdView的一些属性: android:numColumns="auto_fit" --------列数设置为自动 android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度 android:stretchMode="columnWidth"------缩放与列宽大小同步 android:verticalSpacing="10dp"----------垂直边距 android:horizontalSpacing="10dp"-------水平边距
2.PullToRefreshGridView使用
网址:https://github.com/chrisbanes/Android-PullToRefreshPullToRefreshGridView refreshGridview = (PullToRefreshGridView) findViewById(R.id.gd); list = new ArrayList<>(); for (int i = 0; i < 50; i++) { list.add("牛肉+"+i); } //设置上拉加载和下拉刷新的模式 refreshGridview.setMode(PullToRefreshBase.Mode.BOTH); //设置刷新的监听 refreshGridview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) { loadMore(true); } @Override public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) { loadMore(false); } }); GridView gridView = refreshGridview.getRefreshableView();//获取到GridView gridView.setNumColumns(3);//设置为3列 adapter = new MyAdapter(); gridView.setAdapter(adapter); //加载和刷新 private void loadMore(final boolean isRefresh) { new Thread(){ @Override public void run() { if (isRefresh){ list.add(0,"新的牛肉丸"); }else{ list.add("再来一碗牛肉哦"); } runOnUiThread(new Runnable() { @Override public void run() { adapter.notifyDataSetChanged(); refreshGridview.onRefreshComplete();//刷新完毕 } }); } }.start(); }
3.垂直滚动ScrollView搭配ListView的使用;ScrollView只能包含一个孩子
//无论你如何调整layout_width,layout_height属性,ListView列表只显示一列 //需要重新测量listview的高 @BindView(R.id.lv) ListView lv; /** * 测量listview的高 */ private void setListViewHeight() { int totalHeight = 0; if (adapter == null) { return; } for (int i = 0; i < adapter.getCount(); i++) { //获取每一个子View View view = adapter.getView(i, null, lv); //测量每一个子View的宽高 view.measure(0, 0); // 统计所有子View的总高度 totalHeight += view.getMeasuredHeight(); } ViewGroup.LayoutParams layoutParams = lv.getLayoutParams(); //获取总的高度,包括分割线之间的高度+控件的高度 layoutParams.height = totalHeight + lv.getDividerHeight() * (adapter.getCount() - 1); lv.setLayoutParams(layoutParams); }
水平滚动的HorizontalScrollView
4.带有下拉刷新和上拉加载的 垂直滚动ScrollView 方法setMode();
布局中调用 <com.handmark.pulltorefresh.library.PullToRefreshScrollView android:id="@+id/sc" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/lv" android:layout_height="wrap_content"></ListView> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView>
5.pinned-section-listview框架使用
网址:https://github.com/beworker/pinned-section-listview 下载下依赖布局中写: <de.halfbit.pinnedsection.PinnedSectionListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null" android:footerDividersEnabled="false" android:headerDividersEnabled="false" />
Adapter的写法 必须实现implements PinnedSectionListView.PinnedSectionListAdapter
public class MyAdapter extends BaseAdapter implements PinnedSectionListView.PinnedSectionListAdapter { private int student = 0; private int teacher = 1; @Override public int getItemViewType(int position) { Object o = list.get(position); if (o instanceof Teacher) { return teacher; } else { return student; } } @Override public int getViewTypeCount() { return 2; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { TextView textView = new TextView(viewGroup.getContext()); textView.setMaxLines(2); textView.setPadding(20, 20, 20, 20); textView.setGravity(Gravity.CENTER); textView.setTextSize(20); textView.setTextColor(Color.BLACK); //获取条目的类型 int viewType = getItemViewType(i); if (viewType == student) { Student ss = (Student) list.get(i); textView.setBackgroundColor(Color.RED); textView.setText(ss.name); } else { Teacher tt = (Teacher) list.get(i); textView.setBackgroundColor(Color.GREEN); textView.setText(tt.name); } return textView; } /** * 选择固定item的条目的类型,TRUE为固定 * @param viewType * @return */ @Override public boolean isItemViewTypePinned(int viewType) { return viewType == teacher; } }
item的点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(Paind_Section_ListView.this, "第"+i+"个", Toast.LENGTH_SHORT).show(); } });
6.CustomShapeImageView:强大的自定义形状的ImageView
网址:https://github.com/MostafaGazar/CustomShapeImageView辅助作图工具生成Svg格式直接导入项目res->raw
依赖库:
在布局中写: <com.meg7.widget.SvgImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="300dp" android:layout_height="300dp" android:layout_marginTop="10dp" android:layout_marginLeft="16dp" android:scaleType="centerCrop" android:src="@mipmap/sample_4" app:svg_raw_resource="@raw/sun2" />
重连夜神 脚本
重连夜神:call C:\Users\yin13\AppData\Roaming\Nox\bin\Nox.exe 127.0.0.1:62001
7.ormlite数据库 需要依赖俩个jar包 用注解
网址: http://ormlite.com/进入网站 下载core ; jdbc ;android
1.写一个类继承OrmLiteSqliteOpenHelper
public class DBHelper extends OrmLiteSqliteOpenHelper { public DBHelper(Context context) { super(context, "db", null, 1); } private static DBHelper mInatance = null; /** * 静态去调用,保证只有一个对象,单例模式 * @param context * @return */ public static DBHelper with(Context context) { if (mInatance == null) { synchronized (DBHelper.class) { if (mInatance == null) { mInatance = new DBHelper(context); } } } return mInatance; } /** * 创建表格 * @param sqLiteDatabase * @param connectionSource */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { //创建表格 调用TableUtils直接创建 try { TableUtils.createTable(connectionSource,Databases.class); } catch (SQLException e) { e.printStackTrace(); } } /** * 更新表格 * @param sqLiteDatabase * @param connectionSource * @param i * @param i1 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { //drop表 try { TableUtils.dropTable(connectionSource,Databases.class,true); } catch (SQLException e) { e.printStackTrace(); } } }
2.创建javabean
@DatabaseTable(tableName = "xb") //自定义表格的名称 public class Databases { @DatabaseField //定义为表的一个字段 public String name; @DatabaseField public int age; @DatabaseField(generatedId = true)//定义这个列是自增长的id public int id; //需要一个空参的构造 public Databases() { } public Databases(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Databases{" + "name='" + name + '\'' + ", age=" + age + ", id=" + id + '}'; } }
3.获取操作数据库的访问对象 ,?号代表按那种类型去查询
Dao<Databases, Integer> dao = dbHelper.getDao(Databases.class);
4.进行增删改查
/** * 删除数据 * * @param dao * @throws SQLException */ private void delete(Dao<Databases, Integer> dao) throws SQLException { dao.deleteById(4); Log.e("delete", "删除数据"); } /** * 更新数据 * * @param dao */ private void upData(Dao<Databases, Integer> dao) throws SQLException { Databases databases = dao.queryForId(3); databases.name = "小强"; databases.age = 26; //更新数据 dao.update(databases); Log.e("upData", "更新数据"); } /** * 查询数据 * * @param dao */ private void query(Dao<Databases, Integer> dao) throws SQLException { List<Databases> queryForAll = dao.queryForAll(); Log.e("query", "查询到了" + queryForAll.size() + "数据"); for (int i = 0; i < queryForAll.size(); i++) { Log.e("query", "数据" + queryForAll.get(i).toString()); } } /** * 插入数据 * * @param dao * @throws SQLException */ private void create(Dao<Databases, Integer> dao) throws SQLException { Databases db1 = new Databases("小明", 25); dao.create(db1); Log.e("create", "保存成功"); }
相关文章推荐
- 开源框架PullToRefresh、PinnedHeaderListView、PhotoView、CustomShapeImageView
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 利用第三方开源框架 PullToRefreshListView 实现下拉刷新(从网上下载图片)
- PullToRefreshListView addHeaderView 下拉刷新冲突问题
- 开源项目PullToRefresh详解(四)——PullToRefreshListView和ViewPager的结合使用
- Android,PullToRefreshListView,addHeaderView错误!
- 开源项目PullToRefresh详解(四)——PullToRefreshListView和ViewPager的结合使用
- 利用第三方开源框架 PullToRefreshListView 实现下拉刷新
- PullToRefreshView中的listview添加addHeaderView
- PullToRefreshListView的addHeaderView
- PullToRefreshListView中如何addHeaderView
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- 开源项目PullToRefresh详解(三)——PullToRefreshScrollView
- pulltorefresh + StaggeredGridView 添加headerView后不能上拉加载更多的问题
- Android之PullToRefresh(ListView 、GridView 、WebView)使用详解和总结
- (4.2.7)【android开源组件】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
- 对图片进行各种样式裁对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等剪:圆形、星形、心形、花瓣形等--第三方开源--CustomShapeImageView
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向