Android Annotations配置与使用

来源:互联网 发布:神策分析数据分析技术 编辑:程序博客网 时间:2024/06/13 18:47

Android Annotations官网地址:http://androidannotations.org

Android Studio配置

Project级build.gradle

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.2'        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'    }}allprojects {    repositories {        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

Module级build.gradle

apply plugin: 'com.android.application'apply plugin:'android-apt'def AAVersion='4.0.0'android {    compileSdkVersion 23    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "com.android.fileuploaddemo"        minSdkVersion 8        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.4.0'    apt "org.androidannotations:androidannotations:$AAVersion"    compile "org.androidannotations:androidannotations-api:$AAVersion"}apt {    arguments {        androidManifestFile variant.outputs[0]?.processResources?.manifestFile        resourcePackageName "com.android.fileuploaddemo"    }}


简单Demo

package com.android.fileuploaddemo;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.annotation.UiThread;import android.util.Log;import android.widget.Toast;import org.androidannotations.annotations.Click;import org.androidannotations.annotations.EActivity;import org.androidannotations.annotations.Fullscreen;import org.androidannotations.annotations.OnActivityResult;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;@Fullscreen@EActivity(R.layout.activity_main)public class MainActivity extends Activity {    private static final int CAPTURE_IMAGE_REQUEST = 100;    private static final int RECORD_VIDEO_REQUEST = 200;    private static final int MEDIA_TYPE_IMAGE = 1;    private static final int MEDIA_TYPE_VIDEO = 2;    private Uri fileUri;    /**     * 拍照     */    @Click(R.id.capture_image_btn)    void captureImage(){        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        fileUri = getOutputFileUri(MEDIA_TYPE_IMAGE);        intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);        startActivityForResult(intent,CAPTURE_IMAGE_REQUEST);    }    /**     * 录像     */    @Click(R.id.record_video_btn)    void recordVideo(){        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);        fileUri = getOutputFileUri(MEDIA_TYPE_VIDEO);        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1);        intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);        startActivityForResult(intent,RECORD_VIDEO_REQUEST);    }    /**     *     * 当Activity销毁的时候,保存数据     */    @Override    protected void onSaveInstanceState(Bundle outState) {        super.onSaveInstanceState(outState);        outState.putParcelable("fileUri",fileUri);    }    /**     *     * 当Activity重建的时候,恢复数据     */    @Override    protected void onRestoreInstanceState(Bundle savedInstanceState) {        super.onRestoreInstanceState(savedInstanceState);        fileUri = savedInstanceState.getParcelable("fileUrl");    }    /**     *     * 拍照请求返回结果     */    @OnActivityResult(CAPTURE_IMAGE_REQUEST)    void onCaptureImageResult(int resultCode){        if(resultCode == RESULT_OK){            Intent intent = new Intent(MainActivity.this,UploadActivity_.class);            intent.putExtra("filePath",fileUri.getPath());            intent.putExtra("isImage",true);            startActivity(intent);        }else if(resultCode == RESULT_CANCELED){            Toast.makeText(getApplicationContext(),"用户取消拍照",Toast.LENGTH_SHORT).show();        }else{            Toast.makeText(getApplicationContext(),"拍照失败",Toast.LENGTH_SHORT).show();        }    }    /**     *     * 录像请求返回结果     */    @OnActivityResult(RECORD_VIDEO_REQUEST)    void onRecordVideoResult(int resultCode){        if(resultCode == RESULT_OK){            Intent intent = new Intent(MainActivity.this,UploadActivity_.class);            intent.putExtra("filePath",fileUri.getPath());            intent.putExtra("isImage",false);            startActivity(intent);        }else if(resultCode == RESULT_CANCELED){            Toast.makeText(getApplicationContext(),"用户取消录像",Toast.LENGTH_SHORT).show();        }else{            Toast.makeText(getApplicationContext(),"录像失败",Toast.LENGTH_SHORT).show();        }    }    @UiThread    private Uri getOutputFileUri(int mediaType){        File fileDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"dir");        if(!fileDir.exists()){            if(!fileDir.mkdirs()){                Log.d("Message","Create Directory failed");                return null;            }        }        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());        File filePath;        if(mediaType == MEDIA_TYPE_IMAGE){            filePath = new File(fileDir.getPath()+File.separator+"IMG_"+timeStamp+".jpg");        }else if(mediaType == MEDIA_TYPE_VIDEO){            filePath = new File(fileDir.getPath()+File.separator+"VID_"+timeStamp+".mp4");        }else {            return null;        }        return Uri.fromFile(filePath);    }}
0 0
原创粉丝点击