GreeDao 表的生成:
@Entity(nameInDb = "student") //表名 public class Student implements Parcelable { @Id(autoincrement = true) // 设置ID private Long id; @NotNull @Property(nameInDb = "name") private String name; @Property(nameInDb = "age") private int age; @Property(nameInDb = "sex") private String sex;
写一个单例类 :
//注意的是 GreeDao 使用配置四步走
public class GreeUtils {private static GreeUtils utils; private DaoMaster.DevOpenHelper helper;private static final String DB_NAME="student.db";private GreeUtils(Context context){ helper=new DaoMaster.DevOpenHelper(context,DB_NAME); } public static synchronized GreeUtils getInstance(Context context){ if(utils==null) utils=new GreeUtils(context); return utils; } public StudentDao getDao(){ DaoMaster master = new DaoMaster(helper.getWritableDatabase()); DaoSession session = master.newSession(); StudentDao studentDao = session.getStudentDao(); return studentDao; } }
OrmLite 需要依赖compile 'com.j256.ormlite:ormlite-android:5.0'
表单的生成:
@DatabaseTable(tableName = "student") public class Student { @DatabaseField(id = false,generatedId = true) private int id; @DatabaseField(columnName = "name,",unique = true,canBeNull = true) private String name; @DatabaseField(columnName = "age") private int age;// 跟GreeDao不同 Getset 有参无参 需自己实现 继承OrmLiteSqliteOpenHelper
Ormlite类:
public class OrmLiteDemo extends OrmLiteSqliteOpenHelper { private static final String DB_NAME="student.db"; private static final int DB_VERSION=4; public OrmLiteDemo(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try {//创建表 是否存在 存在创建 TableUtils.createTableIfNotExists(connectionSource,Student.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try {TableUtils.dropTable(connectionSource,Student.class,false); TableUtils.createTableIfNotExists(connectionSource,Student.class); } catch (SQLException e) { e.printStackTrace(); } } }第三方框架
具体的配置友盟有详细的步骤 都是复制的东西。
注意的是 分享QQ的时候必须添加一张图片 不然会失败
还有在AndroidManife中须要在 <meta-data>中修改应用的Value值
登录的代码QQ为例:
UMShareAPI.get(SecondActivity.this).getPlatformInfo(SecondActivity.this, SHARE_MEDIA.QQ, new UMAuthListener()分享(代面板):
UMImage umImage = new UMImage(MainActivity.this, R.mipmap.ic_launcher); new ShareAction(MainActivity.this) .withText(list.get(position).toString()) .withMedia(umImage) .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN) .setCallback(new UMShareListener() { @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onResult(SHARE_MEDIA share_media) { } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { } @Override public void onCancel(SHARE_MEDIA share_media) { } }) .open();分享(不带面板):
.setPlatform(SHARE_MEDIA.QQ)//传入平台 .withText("hello")//分享内容 .setCallback(umShareListener)//回调监听器 .share();
//二者区别就在于一个是open一个是share
如何将头像图片设置圆型
public class Formation extends BitmapTransformation {@Overrideprotected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {if (toTransform == null) {return null;}int width = toTransform.getWidth();int height = toTransform.getHeight();int min = Math.min(width, height);
int x = (width - min) / 2;int y = (height - min) / 2;Bitmap bitmap = Bitmap.createBitmap(min, min, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);Bitmap bitmap1 = Bitmap.createBitmap(toTransform, x, y, min, min);
Paint paint = new Paint();paint.setShader(new BitmapShader(bitmap1, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));int r = min / 2;canvas.drawCircle(r, r, r, paint);}return bitmap;@Override}public void updateDiskCacheKey(MessageDigest messageDigest) {}
导入Glide 需注意版本必须是4.0.0 或者3.8 不然会报错
Glide.with(SanActivity.this.getApplicationContext()).load(url).apply(new RequestOptions().centerCrop().priority(Priority.HIGH).error(R.mipmap.c).placeholder(R.mipmap.a).transform(new Formation())).into(imageView2);
ViewPage 添加Recyclerview 添加头布局://headview 为 我设置的头部布局//一定要先确定布局管理器 不然会报错recy.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); RecyclerViewHeader header = RecyclerViewHeader.fromXml(this, R.layout.headview); vp = header.getRootView().findViewById(R.id.vp);
viewPage 的监听事件 可以更改Toolbar的样式:
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position){ case 0: home_toolbar.setTitle("首页"); home_toolbar.setNavigationIcon(R.mipmap.u128); home_toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); break; case 1: home_toolbar.setTitle("购物车"); home_toolbar.setNavigationIcon(R.mipmap.u128); home_toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); break; case 2: home_toolbar.setTitle("地图"); home_toolbar.setNavigationIcon(R.mipmap.u128); home_toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); break; } setSupportActionBar(home_toolbar); }ViewPage 轮播图的切换:
private int count=0; private Handler handler=new Handler(); private Runnable runnable=new Runnable() { @Override public void run() { int i = count % 3; switch (i){ case 0: viewPager.setCurrentItem(0); break; case 1: viewPager.setCurrentItem(1); break; case 2: viewPager.setCurrentItem(2); break; } handler.postDelayed(runnable,2000); count++; } };关于验证码的案列代码:bt_yz.setClickable(false); bt_yz.setBackgroundResource(R.drawable.texiaotwo); new Thread(){ @Override public void run() { for (int i = 59; i>=0; i--) { try { sleep(1000); Message message = Message.obtain(); message.what=i; handler.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } } } }.start(); break;private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what > 0) { bt_yz.setText("(" + msg.what + ")秒后重试"); } else { bt_yz.setText("获取验证码"); bt_yz.setClickable(true); bt_yz.setBackgroundResource(R.drawable.texiao); } } };