2019最新黑马javaee第49期全套无加密项目实战(完整)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号:"/>
        <EditText
            android:id="@+id/username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:width="80dp"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:"/>
        <EditText
            android:id="@+id/password"
            android:width="80dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/bt_insert"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="插入"/>
        <Button
            android:id="@+id/bt_query"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查询"/>
        <Button
            android:id="@+id/bt_update"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="更新"/>
        <Button
            android:id="@+id/bt_delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除"/>
 
    </LinearLayout>
    <TextView
        android:id="@+id/showText"
        android:text="暂无数据"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
package com.sjzc.edu;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class MyHelper extends SQLiteOpenHelper {//继承SQLiteOpenHelper 
    public MyHelper(Context context) {
        super(context, "itcast.db", null, 1);//参数3:游标工厂
    }
    //创建数据库
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE information (_id INTEGER PRIMARY KEY AUTOINCREMENT,username VARCHAR(20),password VARCHAR(20))");
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
    }
}
package com.sjzc.edu;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private MyHelper myHelper;
    private EditText et_username;
    private EditText et_password;
    private TextView showText;
    private Button bt_query;
    private Button bt_insert;
    private Button bt_update;
    private Button bt_delete;
    private String username;
    private String password;
    private SQLiteDatabase db;
    private ContentValues values;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建数据库
        myHelper= new MyHelper(this);
        initView();//初始化控件
 
    }
 
    private void initView() {
        et_username = findViewById(R.id.username);
        et_password = findViewById(R.id.password);
        showText = findViewById(R.id.showText);
        bt_delete = findViewById(R.id.bt_delete);
        bt_insert = findViewById(R.id.bt_insert);
        bt_query = findViewById(R.id.bt_query);
        bt_update = findViewById(R.id.bt_update);
 
        bt_update.setOnClickListener(MainActivity.this);
        bt_delete.setOnClickListener(MainActivity.this);
        bt_query.setOnClickListener(MainActivity.this);
        bt_insert.setOnClickListener(MainActivity.this);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.bt_insert://添加
                username  = et_username.getText().toString();
                 password = et_password.getText().toString();
                db = myHelper.getReadableDatabase();//获取可读的数据库对象
                values = new ContentValues();
                values.put("username",username);
                values.put("password",password);
                db.insert("information",null,values);
                db.close();
                Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_LONG).show();
                break;
            case R.id.bt_query://查询
                db = myHelper.getReadableDatabase();//获取可读的数据库对象
                Cursor cursor = db.query("information", null, null, null, null, null, null);//返回一个结果集
                if (cursor.getCount()==0){
                    //没有查到数据
                    Toast.makeText(MainActivity.this,"没有查到数据",Toast.LENGTH_LONG).show();
                    showText.setText("没有查到数据");
                }else{
                    cursor.moveToFirst();
                    Toast.makeText(MainActivity.this,cursor.getString(1),Toast.LENGTH_LONG).show();
                    showText.setText("Username:"+cursor.getString(1)+",Password:"+cursor.getString(2));//每行数据有两列,分别为username和password
                    while (cursor.moveToNext()){
                        showText.append("\n"+"Username:"+cursor.getString(1)+",Password:"+cursor.getString(2));
                    }
                }
                db.close();//用完了要关闭
                break;
            case R.id.bt_update://更新
                username  = et_username.getText().toString();
                db = myHelper.getReadableDatabase();//获取可读的数据库对象
                values = new ContentValues();
                values.put("password","987654");//要更新的字段和内容
                db.update("information",values,"username = ?",new String[]{username});
                db.close();
                break;
            case R.id.bt_delete://删除
                db = myHelper.getReadableDatabase();
                db.delete("information",null,null);//删除所有
                Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_LONG).show();
                showText.setText("无数据");
                db.close();
                break;
        }
    }import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
 
/**
 * Created by zachary on 2019/04/08.
 * 圆形ImageView
 */
public class MusicView extends AppCompatImageView {
 
    private Paint paint;
 
    public MusicView(Context context) {
        this(context,null);
    }
 
    public MusicView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
 
    public MusicView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        paint = new Paint();
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        //获取图像资源
        Drawable drawable = getDrawable();
        if (null != drawable) {
            Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
            Bitmap b = getCircleBitmap(bitmap);
            //上层
            final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());
            //下层
            final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
            paint.reset();
            canvas.drawBitmap(b, rectSrc, rectDest, paint);
        } else {
            super.onDraw(canvas);
        }
    }
 
    /**
     * 获取圆形图片方法
     * @param bitmap
     * @return Bitmap
     */
    private Bitmap getCircleBitmap(Bitmap bitmap) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
        final int color = 0xffffffff;
 
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        //设置抗锯齿
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        int x = bitmap.getWidth();
        //圆形的大小
        canvas.drawCircle(x / 2, x / 2, x / 2, paint);
        //PorterDuff.Mode.SRC_IN模式组合效果
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return output;
    }
}
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.animation.LinearInterpolator;
 
/**
 * Created by zachary on 2019/04/08.
 * 圆形ImageView,旋转操作(属性动画ObjectAnimator)
 */
public class MusicView extends AppCompatImageView {
 
    private ObjectAnimator objectAnimator;
 
    public static final int STATE_PLAYING = 1;     //正在播放
    public static final int STATE_PAUSE = 2;       //暂停
    public static final int STATE_STOP = 3;        //停止
    public int state;
 
    private Paint paint;
 
    public MusicView(Context context) {
        this(context,null);
    }
 
    public MusicView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
 
    public MusicView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        paint = new Paint();
        init();
    }
 
    private void init(){
        state = STATE_STOP;
        //添加旋转动画,旋转中心默认为控件中点
        objectAnimator = ObjectAnimator.ofFloat(this, "rotation", 0f, 360f);
        //设置动画时间:3s
        objectAnimator.setDuration(3000);
        //动画:时间线性渐变
        objectAnimator.setInterpolator(new LinearInterpolator());
        objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
        objectAnimator.setRepeatMode(ObjectAnimator.RESTART);
    }
 
    /**
     * 绘制圆形图片
     */
    @Override
    protected void onDraw(Canvas canvas) {
        Drawable drawable = getDrawable();
        if (null != drawable) {
            Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
            Bitmap b = getCircleBitmap(bitmap);
            //上层
            final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());
            //下层
            final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
            paint.reset();
            canvas.drawBitmap(b, rectSrc, rectDest, paint);
        } else {
            super.onDraw(canvas);
        }
    }
 
    /**
     * 获取圆形图片方法
     * @param bitmap
     * @return Bitmap
     */
    private Bitmap getCircleBitmap(Bitmap bitmap) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
        final int color = 0xff424242;
 
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        int x = bitmap.getWidth();
 
        canvas.drawCircle(x / 2, x / 2, x / 2, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return output;
    }
 
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    public void playMusic(){
        if(state == STATE_STOP){
            objectAnimator.start();    //动画开始
            state = STATE_PLAYING;
        }else if(state == STATE_PAUSE){
            objectAnimator.resume();   //动画重新开始
            state = STATE_PLAYING;
        }else if(state == STATE_PLAYING){
            objectAnimator.pause();    //动画暂停
            state = STATE_PAUSE;
        }
    }
 
    public void stopMusic(){
        objectAnimator.end();         //动画结束
        state = STATE_STOP;
    }
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44937580/article/details/90026869
今日推荐