新闻排行榜

雷蛇官网,古风图片,生育津贴怎么算-草莓商店内容中心

1.模仿美图秀秀的修正图形

1.反编译mtxx.apk,得到so文件,放到自己工程下的libs目录下;
2.反编译mtxx.apk,检查JNI的java代码.
3.依照mtxx.apk中的包名在自己工程中创立包名,创立JNI类,把2中JNI中的代码复制过来;
4.在调用JNI中的修正图形的办法,修正图形的数组.
public void click(View v){
//1.得到原图
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.after2);
int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];
// 2.得到原图的色彩对应的数组
// 参1:图形色彩对应的数组
// 参2:开端写色彩数据的索引方位
bitmap.getPixels(pixels , 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
// 3.调用so的办法修正数组中的数据
JNI jni = new JNI();
// 参1:pixels 需求修正的数组
jni.StyleLomoC(pixels, bitmap.getWidth(), bitmap.getHeight());
// 4.运用修正后的数组创立一个新的图片
Bitmap newBitmap = Bitmap.createBitmap(pixels, bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
// 5.显现图片
iv.setImageBitmap(newBitmap);
}

2.锅炉压力表

1.在Android界面上显现柱状的图形:
柱的凹凸与压力值有关
柱的色彩与压力的区间有联系
MainActivity.java:
public class MainActivity extends Activity {
private PresureView view;
private int presure;
private Timer timer;
private TimerTask task;
static {
// 加载动态库
System.loadLibrary("PresureDemo");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
// 调用C代码得到压力值
presure = getPresure();
runOnUiThread(new Runnable() {
@Override
public void run() {
if (presure <= 200) {
view = new PresureView(MainActivity.this, presure);
setContentView(view);
} else {
TextView view = new TextView(
getApplicationContext());
view.setText("哥哥,赶快跑,锅炉要爆破了!!!!!!!!");
view.setTextColor(Color.RED);
view.setTextSize(25);
setContentView(view);
// 爆破后中止更新柱状图标
timer.cancel();
task.cancel();
timer = null;
task = null;
}
}
});
}
};
timer.scheduleAtFixedRate(task, 500, 1000);
}
public native int getPresure();
}

PresureView.java:

 public class PresureView extends View {
private Paint paint;
private int mPresure;
public PresureView(Context context,int presure) {
super(context);
// 接纳传过来的压力值
mPresure = presure;
paint = new Paint();
}
/**
* 界面一翻开就调用这个办法制作图形
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(0< mPresure && mPresure <= 180){
paint.setColor(Color.GREEN);
}else if(mPresure <= 250){
paint.setColor(Color.YELLOW);
}else if(mPresure < 280){
paint.setColor(Color.RED);
}else {
// 锅炉要爆破了
}
canvas.drawRect(20, 300 - mPresure, 40, 300, paint);
}
}
2.在c代码中得到压力:
#include
#include
#include "cn_itcast_presuredemo_MainActivity.h"
#include
#define LOG_TAG "System.out"
#define LOGE(...)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#define LOGI(...)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
int getPresure(){
// 得到一个随机的数字
int presure = rand();
return presure % 300;
}
JNIEXPORT jint JNICALL Java_cn_itcast_presuredemo_MainActivity_getPresure
(JNIEnv * env, jobject obj){
int presure = getPresure();
return presure;
}

3.卸载运用翻开浏览器

#include 
#include
#include "cn_itcast_uninstallappdemo_MainActivity.h"
JNIEXPORT void JNICALL Java_cn_itcast_uninstallappdemo_MainActivity_callUninstallApp(
JNIEnv * env, jobject obj) {
int isStop = 1;
// 运用fork函数割裂一个进程
int result = fork();
if (result > 0) {
// 阐明当时程序是运行在父进程中的
} else if (result == 0) {
// 阐明当时程序是运行在子进程中的
while (isStop) {
// 睡觉1秒
sleep(1);
// FILE *fopen(const char *, const char *);
FILE* file = fopen("/data/data/cn.itcast.uninstallappdemo", "r");
if (file == NULL) {
// 发动浏览器翻开一个网页
execlp("am", "am", "start", "-a", "android.intent.action.VIEW",
"-d", "http://www.itheima.com", NULL);
// 假如现在翻开网页了下次就不要翻开了
isStop = 0;
}
}
} else {
// 阐明当时程序出错了
}
}

相关文章