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
- Android Annotations配置与使用
- Android annotations快速开发框架使用,Android Studio与Eclipse配置
- Android Annotations 配置
- Android Studio 配置Annotations
- Android Studio配置Annotations
- android-annotations使用入门
- 使用Android Annotations开发
- 关于android annotations使用
- Android Studio 配置 android annotations
- Android Annotations框架的使用
- Android Support Annotations 使用详解
- Android Support Annotations 使用详解
- Android Studio1.5 配置Android annotations
- Android Studio中配置 Android annotations
- Android Studio 1.5+ 配置Android Annotations框架
- Android Annotations框架 配置及使用(Windows 7 + Android Studio 1.2.1.1)
- Android Annotations在Eclipse下配置
- Intellij IDEA配置Android Annotations注解框架
- Android——ListView、Adapter及其优化
- Bag of features
- cassandra在Windows上注册服务
- Git解决分支冲突及分支管理策略
- Ehcache学习总结(3)--Ehcache 整合Spring 使用页面、对象缓存
- Android Annotations配置与使用
- storm DRPC指南
- #pragma once 与#ifndef
- [3D 图形学基础] 读书笔记(2) Part_I(Getting Started) - Linear 线性
- Spring MVC、struts1和struts2区别
- mahout之推荐系统源码笔记(3) ---执行推荐之RecommenderJob
- VS2012环境编译驱动(根据网络教程改编)
- Java 二叉树(一)普通方式的创建
- DomReader工具