android自定义涂鸦,Android Studio:小Demo-“涂鸦”
一、在手机模拟器上显示一个图片
1、MainActivity.java里的代码
public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//配置界面
setContentView(R.layout.activity_main);
}
}
2、activity_main.xml内代码
activity_main.xml
3、通过在MainActivity.java和activity_main.xml内简单设置就可以显示一个图片了呢
结果.PNG
二、设置背景颜色
1、MainActivity.java内代码
public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//配置界面
setContentView(R.layout.activity_main);
//设置当前这个界面的内容视图为这个容器
//通过代码来布局界面
//1、找一个容器
FrameLayout container = new FrameLayout(this);
//2、设置当前这个界面的内容视图为这个容器
setContentView(container);
//3、创建一个子视图(子控件)(1)创建ImagineView显示图片 (2)设置属性
ImageView backgroundImageView = new ImageView(this);
backgroundImageView.setBackgroundColor(Color.GREEN);
//添加到容器里面
container.addView(backgroundImageView, 200, 200); //可改动数据,设置背景大小
}
}
2、手机模拟器上:
设置前
前.PNG
设置后
后.PNG
三、“涂鸦”
1、思路:使用透明色去替换原有图片的对应点的像素,获取替换之后的图片 将图片显示在模拟器上
2、MainActivity.java内代码
public class MainActivity extends AppCompatActivity {
ImageView forground;
Bitmap orgBitmap;
Bitmap copyBitmap;
Canvas canvas;
Paint paint;
Matrix matrix;
//创建一个界面 界面如何布局
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //配置界面
forground=findViewById(R.id.iv_forground); //找到容器里面的图片视图控件 findViewById
//将需要操作的图片读取出来 Bitmap
orgBitmap= BitmapFactory.decodeResource(getResources(),R.drawable.a2); //BitmapFactory: 用于管理位,decodeResource: 从工程的资源路径中去生成一张位图,getResources() :获取工程的资源,R.drawable.a1:访问资源路径下 drawable里面一个文件
//创建一个和原始图片相同环境的空位图
copyBitmap=Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig()); //操作这张图片 用透明色去替换某个位置的颜色
//创建一个 Canvas 画布=现实中的画板
canvas=new Canvas(copyBitmap);
//创建一个画笔
paint=new Paint();
//先创建一个矩阵
matrix=new Matrix();
//画一幅图
canvas.drawBitmap(orgBitmap,matrix,paint);
//显示图片
forground.setImageBitmap(copyBitmap);
//给前景图片添加touch事件
forground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent Event) {
//获取当前事件
int action= Event.getAction();
//判断状态
if (action==MotionEvent.ACTION_MOVE){
//获取触摸点的坐标
int x=(int)Event.getX();
int y=(int)Event.getY();
System.out.println(canvas);
//替换x,y对应的像素
//将当前触摸点周围的像素都该成透明的
for( int i=-500;i<500;i++) {
for( int j=-500;j<500;j++) {
copyBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);
}
//canvas.drawBitmap(orgBitmap, new Matrix(), paint);
}
forground.setImageBitmap(copyBitmap);
}
return true;
}
});
}
}
3、手机模拟器上
可“涂鸦”揭秘底层图片
GIF.gif
四、心得
今天东哥的讲课速度非常棒
android自定义涂鸦,Android Studio:小Demo-“涂鸦”相关推荐
- 安android自定义照相机,Android自定义照相机的实例
Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是 ...
- android 自定义LabelView实现各类小标签,重要功能已标注
转载请注明出处:王亟亟的大牛之路 一个自定义TextView可实现各种控件右上,左上等位置附带便签实现. 项目结构: 运行效果: 只需要一个类就可以完成以上实现 LabelView public cl ...
- Android 新版个税计算小demo程序
去年10月份开始个人所得税支持专项扣除和上调了个税起征点,针对该项改变写了一个小demo,在新政策下计算个人所得税扣除,工资所得,然后将每个月的扣除额度和实际所得额度展示. 截图如下: 直接上源码: ...
- android 腾讯微博登录小demo
目前越来越多的app,都需要集成三方登录(腾讯微博.新浪微博.人人等等).这里分享一个简单的腾讯微博demo.废话不多说,三步走. 第一步注册一个账户,并创建一个应用.获取app ID与 app Ke ...
- Android 自定义动画view(小变大,旋转,色值)
也不知道到看了多少的动画总结了,但是用到的时候太少,过段时间就会忘记了. 既然如此,我选择直接去动手学习,步步进阶. 效果: 上代码之前我们分析一下才会加深自己的印象: 需要画一个矩形 和 一个圆形 ...
- android 自定义时钟,Android自定义控件之圆形时钟(续)
在上篇文章中,我向大家介绍了如何通过自定义View一步步画出一个漂亮的圆形时钟.如果你还没看的话,我不建议你接着往下看,因为这篇文章是接着上篇的文章,如果直接看的话可能会不知所云,所以还是建议你先看一 ...
- android 自定义图形,Android自定义View之图形图像(模仿360的刷新球自定
概述: 360安全卫士的那个刷新球(姑且叫它刷新球,因为真的不知道叫什么好,不是dota里的刷新球!!),里面像住了水一样,生动可爱,看似简单,写起来不太简单,本例程只是实现了它的部分功能而已,说实话 ...
- android 自定义event,Android运用onTouchEvent自定义滑动布局
写在自定义之前 我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件. 1.boolean onTouch(View v, Motio ...
- Android 自定义 圆环,Android自定义view实现圆环效果实例代码
先上效果图,如果大家感觉不错,请参考实现代码. 重要的是如何实现自定义的view效果 (1)创建类,继承view,重写onDraw和onMesure方法 public class CirclePerc ...
- android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器
本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout ...
最新文章
- python切片语法-Python新手学习基础之数据类型——字符串的切片截取
- EL之Boosting之GB(DTR):简单回归问题使用梯度提升法(DIY数据集+DTR模型+调两参)
- 图解TCP四次握手断开连接
- 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题
- css技能你get到了吗?
- NB朴素贝叶斯理论推导与三种常见模型
- Linux服务器开发初步
- 高效编排有状态应用——TiDB 的云原生实践与思考
- Java并发之AQS同步器学习
- Css单位px,rem,em,vw,vh的区别
- QNX系统和凝思系统分别系统时间设置RTC时间方法
- After和Instead of触发器
- 阿里云购买云服务器流程及注意事项(新用户必看图文教程)
- 如何从零基础学嵌入式
- 求最大公约数的几种常见方法(C语言)
- 校验国内外的座机和手机号码
- mysql安全性案例分析_MySQL实例crash的案例分析
- 3DsMax —布尔制作口红
- artemis服务_Artemis
- Java入门第112课——使用Iterator的hasNext方法、next方法遍历集合
热门文章
- 召唤神龙 javascript 调整地图大小
- 详解木瓜移动终止上市:深交所提出47问,涉定位不清、业绩下滑
- wegame更改计算机设备,WEGAME手机串流怎么设置 WEGAME手机串流设置教程
- 安装RabbitMQ时出现Plugin configuration unchanged,RabbitMQ服务启动几秒后自动关闭, http://127.0.0.1:15672/页面无法访问一并解答
- SAP中总账科目行项目不显示的处理方法
- python 单词纠错_自然语言处理1——语言处理与Python(内含纠错)
- 不同参数对分类模型性能影响记录
- 台式计算机国标码,在计算机中,国标码是属于什么码?
- python椭圆曲线加密算法_ECC椭圆曲线加密学习笔记
- 计算机通信网自学笔记(1)