首页 > IT职业 > IT生活 > andorid透明屏幕
manifest中:
<!-- 配置 实时壁纸 service --><!--为实时壁纸配置intent filter --> <!-- 为实时壁纸配置meta data -->
2.在res文件夹下面新建一个xml文件夹 然后新建一个livewallpaper.xml 内容如下:
<!-- ic_launcher 预览时显示的图片-->
3.新建实现动态壁纸的LiveWallpaper.java:
package com.dyf.dyfkotlindemo.service;
import android.hardware.Camera;
import android.service.wallpaper.WallpaperService;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import java.io.IOException;
/**
* Created by dyf on 2017/7/26.
*/
public class CameraLiveWallpaper extends WallpaperService {
//实现wallpaperService 必须实现的抽象方法
@Override
public Engine onCreateEngine() {
//返回自定义的CameraEngine
return new CameraEngine();
}
class CameraEngine extends Engine implements Camera.PreviewCallback {
private Camera camera;
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
startPreview();
//设置处理触摸事件
setTouchEventsEnabled(true);
}
@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
//事件处理:点击拍照 ,长按拍照
}
@Override
public void onDestroy() {
super.onDestroy();
stopPreview();
}
//这个一定要加, 不然不行 黑屏 小米4c 亲测有效
@Override
public void onVisibilityChanged(boolean visible) {
if (visible) {
startPreview();
} else {
stopPreview();
}
}
public void startPreview(){
camera = Camera.open();
camera.setDisplayOrientation(90);
try {
camera.setPreviewDisplay(getSurfaceHolder());
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
}
public void stopPreview(){
if (camera != null){
camera.stopPreview();
camera.setPreviewCallback(null);
// camera.lock();
camera.release();
//
camera = null;
}
}
@Override
public void onPreviewFrame(byte[] bytes, Camera camera) {
camera.addCallbackBuffer(bytes);
}
}
}
4.在MainActivity中添加如下代码:
package com.dyf.dyfkotlindemo.wallpaper;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import com.dyf.dyfkotlindemo.R;
/**
* Created by dyf on 2017/7/26.
*/
public class MainActivity extends AppCompatActivity {
private static final int PERMISSIONS_REQUEST_CAMERA = 454;
private Context mContext;
static final String PERMISSION_CAMERA = Manifest.permission.CAMERA;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wallpaper);
mContext = this;
findViewById(R.id.text).setOnClickListener(v -> {
checkSelfPermission();
});
}
void checkSelfPermission(){
if (ContextCompat.checkSelfPermission(mContext, PERMISSION_CAMERA) !=
PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,
new String[]{PERMISSION_CAMERA},
PERMISSIONS_REQUEST_CAMERA);
}else {
startWallpaper();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case PERMISSIONS_REQUEST_CAMERA: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
startWallpaper();
}else{
Toast.makeText(mContext, getString(R.string._lease_open_permissions), Toast.LENGTH_SHORT).show();
}
return;
}
}
}
void startWallpaper(){
final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
Intent chooser = Intent.createChooser(pickWallpaper, getString(R.string.choose_wallpaper));
startActivity(chooser);
}
}
附:string.xml
dyfkotlinDemo 史上最浅显易懂的Git教程!nr 为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。nr 既然号称史上最浅显易懂的Git教程,那这个教程有什么让你怦然心动的特点呢?nr 首先,本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻松入门,不必担心起步难度;nr 其次,本教程实用性超强,边学边练,一点也不觉得枯燥。而且,你所学的Git命令是“充分且必要”的,掌握了这些东西,你就可以通过Git轻松地完成你的工作。nr nr史上最浅显易懂的Git教程! {"code":200,"message":"数据获取成功","result":[{"order_id":"64","price":"0.01","order_sn":"201707111809105964a3c6c9239","time":"2017-07-11 18:09:10","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"1","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]},{"order_id":"63","price":"0.01","order_sn":"201707111806545964a33e652c0","time":"2017-07-11 18:06:54","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"0","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"},{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]},{"order_id":"62","price":"0.01","order_sn":"201707111804125964a29c26f93","time":"2017-07-11 18:04:12","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"1","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"},{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"},{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]},{"order_id":"61","price":"0.01","order_sn":"201707111802155964a22749b60","time":"2017-07-11 18:02:15","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"1","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"},{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]},{"order_id":"60","price":"0.01","order_sn":"2017071117402559649d09f1895","time":"2017-07-11 17:40:25","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"1","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]},{"order_id":"59","price":"0.01","order_sn":"2017071117350259649bc63a59e","time":"2017-07-11 17:35:02","goods_amount":"0.01","fee":"0.00","num":"1","status":"0","pay_status":"0","goodslist":[{"gid":"18","gname":"Air Jordan 12 Low AJ12 狼灰 麂皮 308317 308305-002","attr_name":"黄色|29","num":"1","price":"0.01","total":"0.01"}]}]} data test 请打开权限 关闭动态壁纸
原作者github地址:https://github.com/songixan/Wallpaper
我的github地址:https://github.com/dyf505776897/dyfkotlindemo 欢迎star 共同进步学习探讨
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4003/viewspace-2814107/ ,如需转载,请注明出处,否则将追究法律责任。