Android高级 所有简单框架的主要核心代码

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 {
    @Override
    protected 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);
        }
    }
};




       
       

       
       

       
       





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值