安卓开发小程序之美图秀秀
今天调试了一个慕课网上的小程序,功能是通过HSI 来调整图像的色调,饱和度,亮度。一开始虚拟机出现App has stopped 后面经过调试 app成功运行 出现Bug的原因是没有创建
setContentView(R.layout.primary_color);
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.android.meituxiuxiu">
package com.androidzhangting.meituxiuxiu;import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;public class ImageHelper {public static Bitmap handleImageEffect(Bitmap bm,float hue,float saturation,float lum){Bitmap bmp=Bitmap.createBitmap(bm.getWidth(),bm.getHeight(),Bitmap.Config.ARGB_8888);Canvas canvas=new Canvas(bmp);Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);ColorMatrix hueMatrix=new ColorMatrix();hueMatrix.setRotate(0,hue);hueMatrix.setRotate(1,hue);hueMatrix.setRotate(2,hue);ColorMatrix saturationMatrix=new ColorMatrix();saturationMatrix.setSaturation(saturation);ColorMatrix lumMatrix=new ColorMatrix();lumMatrix.setScale(lum,lum,lum,1);ColorMatrix imageMatrix=new ColorMatrix();imageMatrix.postConcat(hueMatrix);imageMatrix.postConcat(saturationMatrix);imageMatrix.postConcat(lumMatrix);paint.setColorFilter(new ColorMatrixColorFilter(imageMatrix));canvas.drawBitmap(bm,0,0,paint);return bmp;}
}
package com.androidzhangting.meituxiuxiu;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.ImageView;
import android.widget.SeekBar;public class PrimaryColor extends Activity implements SeekBar.OnSeekBarChangeListener {private ImageView mimageView;private SeekBar mSeekbarHue, mSeekbarSaturation, mSeekbarLum;private static int MAX_VALUE = 255;private static int MID_VALUE = 127;private float mHue, mSaturation, mLum;private Bitmap bitmap;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.primary_color);bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pubu);mimageView = (ImageView) findViewById(R.id.imageview);mSeekbarHue = (SeekBar) findViewById(R.id.seekbarHue);mSeekbarSaturation = (SeekBar) findViewById(R.id.seekbarSaturation);mSeekbarLum = (SeekBar) findViewById(R.id.seekbarLum);mSeekbarHue.setOnSeekBarChangeListener(this);mSeekbarSaturation.setOnSeekBarChangeListener(this);mSeekbarLum.setOnSeekBarChangeListener(this);mSeekbarHue.setMax(MAX_VALUE);mSeekbarSaturation.setMax(MAX_VALUE);mSeekbarLum.setMax(MAX_VALUE);mSeekbarHue.setProgress(MID_VALUE);mSeekbarSaturation.setProgress(MID_VALUE);mSeekbarLum.setProgress(MID_VALUE);mimageView.setImageBitmap(bitmap);}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {switch (seekBar.getId()) {case R.id.seekbarHue:mHue = (progress - MID_VALUE) * 1.0f / MID_VALUE * 180;break;case R.id.seekbarSaturation:mSaturation = progress * 1.0f / MID_VALUE;break;case R.id.seekbarLum:mLum = progress * 1.0f / MID_VALUE;break;}mimageView.setImageBitmap(ImageHelper.handleImageEffect(bitmap, mHue, mSaturation, mLum));}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}
}
<?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:gravity="center_horizontal"android:orientation="vertical"android:paddingBottom="16dp"android:paddingTop="16dp"android:paddingRight="16dp"android:paddingLeft="16dp"tools:context=".MeiTuXiuXiuActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="40dp"android:text="美图秀秀"android:textSize="40sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.502"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.146" /><Buttonandroid:id="@+id/buttonhue"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="PrimaryColor"android:onClick="btnPrimaryColor"tools:layout_editor_absoluteX="148dp"tools:layout_editor_absoluteY="184dp" /><Buttonandroid:id="@+id/buttonsaturation"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="NewButton"tools:layout_editor_absoluteX="148dp"tools:layout_editor_absoluteY="280dp" /><Buttonandroid:id="@+id/buttonlum"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="NewButton"tools:layout_editor_absoluteX="128dp"tools:layout_editor_absoluteY="382dp" /></LinearLayout>
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MeiTuXiuXiuActivity">
package com.androidzhangting.meituxiuxiu;import android.app.Activity;
import android.content.Intent;import android.os.Bundle;
import android.view.View;public class MeiTuXiuXiuActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mei_tu_xiu_xiu);}public void btnPrimaryColor(View view){startActivity(new Intent(this,PrimaryColor.class));}}
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".PrimaryColor"/> </application></manifest>
安卓开发小程序之美图秀秀相关推荐
- 微信小程序版“美图秀秀”源码
使用代码 下载并安装微信开发者工具,使用微信号扫码登录开发者工具. 打开微信开发者工具,点击"小程序项目"按钮,输入小程序 AppID,项目目录选择下载的代码目录,点击确定创建小程 ...
- iOS开发——打造自己的“美图秀秀”
iOS开发--绘图与滤镜 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quart ...
- Android -- 小功能 仿美图秀秀(美颜相机)马赛克功能
前言: 之前公司有需求,需要对图片进行编辑,功能参照美图秀秀(或者美颜相机)的功能(带手指触动预览图功能.带放大缩小实施涂鸦功能),上网找了一堆源码,发现没有类似的,只能自己写 实现思路: 见源码,下 ...
- uniapp开发小程序引入折线图
在网上找了好多说的都不是太清楚,我这边直接上代码演示,也方便以后自己能用到 下面两个标签+js然后引入一个js文件就可以实现,js文件我的资源里面有大家可以去下载,文件 <u-calendar ...
- 小程序轮播图高度适配
小程序轮播图适配 在开发小程序轮播图时,我遇到一下问题:小程序轮播图的导航栏总是不能放在正确的位置上,思考再三,我发现问题的原因是:当我们设置image的mode="widthFix&quo ...
- iOS开发系列--打造自己的“美图秀秀”
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- iOS开发系列–打造自己的“美图秀秀”
原文出处: KenshinCui 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介 ...
- iOS开发系列--打造自己的ldquo;美图秀秀rdquo;
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- Android+JNI+OpenGL开发自己的美图秀秀
https://blog.csdn.net/oshunz/article/details/50537631 Android+JNI+OpenGL开发自己的美图秀秀 2016年01月18日 16:39: ...
- iOS:iOS开发系列–打造自己的“美图秀秀”(下)
来源: KenshinCui 链接:http://www.cnblogs.com/kenshincui/p/3959951.html 运行效果: 其他图形上下文 前面我们也说过,Quartz 2D的图 ...
最新文章
- python怎么输出字符串_python出输出字符串方式:
- 如何编写无法维护的代码_编写可维护的前端代码
- Java初学者习题20道(转)
- frac函数_20个能够有效提高 Pandas数据分析效率的常用函数,附带解释和例子
- hdu1160 dp
- unity创建和销毁对象_如何创建和销毁对象
- java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]
- Ubuntu16.04下制作deb包的方法详解
- 两台电脑怎么共享_怎么在电脑上创建共享文件(必须是在同一个网段)
- 自动化测试--实现一套完全解耦的简单测试框架
- 解锁新招:冷冻手机窃密数据
- linux 服务状态命令,Linux 查看服务列表,查看服务状态
- pcn变更流程图_超经典的工程变更流程图
- python中几种括号的用法()、[]、{} 举例说明
- NLP入门学习(一):搜狗新闻语料库的获取与预处理
- 【CCNA3】思科基本命令汇总+网线线序
- html中怎么写艺术字,用CSS设计艺术字
- MOSES统计机器翻译系统实验过程
- 单个Java文件打成可执行JAR包
- 论坛mysql cpu100_解决 MYSQL CPU 占用 100% 的经验总结