目的:
了解Android studio中各個程序目錄的意義聪廉,知道Activity的生命周期及對應(yīng)的接口調(diào)用,通過撕衣服小demo來了解安卓開發(fā)的一些基本知識。
知識與技術(shù):
1.Android studio的目錄介紹:
Android studio的目錄介紹
2.Activity的生命周期
Android里面的大部分的控件都會提供很多方法
* 這些方法只需要自己去重寫 不需要自己主動調(diào)用
* 什么是Activity = 就是一個界面
* 管理一個界面從創(chuàng)建到運行到結(jié)束的整個過程 / 生命周期
* 配置界面 onCreate 這個方法是系統(tǒng)調(diào)用的
* 啟動界面 start
* 重新啟動 restart
* 喚醒界面 resume
* 暫停界面 pause
* 銷毀界面 Destroy
對應(yīng)接口的調(diào)用順序
* 界面啟動
* onCreate
* onStart
* onResume
*
* 點擊home鍵 回到主界面
* onPause
*
* 通過后臺 重新運行這個程序
* onRestart
* onStart
* onResume
*
* 使用返回鍵 返回到主界面
* onPause
* onDestroy
3.Xml界面布局
* 使用兩種方式界面布局
* 1.xml配置
* 2.使用Java代碼創(chuàng)建
*
* 默認一個Activity對應(yīng)一個xml配置文件
* 命名特點:activity_界面功能.xml
* xml文件就是一個容器:可以放很多UI控件
* 布局:這么多控件該如何布局
* 1.約束布局 ConstraintLayout
* 2.線性布局 LinearLayout 垂直 水平
* 3.相對布局 RelativeLayout
* 4.幀布局 FrameLayout
* 5.表格布局 TableLayout GridLayout
* 6.絕對布局 AbsoluteLayout
Xml界面
Xml界面
Xml文件配置界面
Design為控件拖拽
Text為代碼配置
在Android開發(fā)具體使用中,常用Text(代碼配置)[安卓的拖拽功能不完善,不常用]
Xml添加控件
添加圖片
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg" />
* 控件的尺寸
* 父視圖:
* 子視圖:
* 將一個控件添加到一個容器中娄周,控件就是這個容器的子視圖
* 容器就是這個控件的父視圖
*
* 1.match_parent 和父視圖一樣大
* 2.wrap_parent 包裹大小 和控件的內(nèi)容一樣大
* 3.20dp 具體尺寸
* 使用Java代碼來布局界面
* 通過添加id號可以唯一標識某一個控件 或者 組件(容器)
android:id="@+id/fl_main"
* xml:解耦 安卓推薦使用xml
* 什么時候需要用代碼創(chuàng)建 什么時候使用xml配置
* 如果添加的控件是靜態(tài)的(變化的東西不多) 選擇xml配置
* 如果需要靈活地操作這個控件 選擇代碼創(chuàng)建
4.更改樣式
清單文件
更改主題樣式
* 程序或者某個UI模塊都可以有自己的樣式style
* 可以在values.style.xml里面定義
* 不需要ActionBar
parent="Theme.AppCompat.Light.NoActionBar"
> <里面就是app的名稱
改變app名稱
Android Studio進行APP圖標更改的兩種方式參考鏈接
實際使用:
制作一個撕衣服的小demo
撕衣服demo實現(xiàn)的思路
使用透明色去替換原有圖片的對應(yīng)點的像素
立刻獲取替換之后的圖片 將圖片顯示在ImageView上
創(chuàng)建控件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
tools:context=".MainActivity"
android:id="@+id/fl_main">
背景圖片
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg" />
顯示操作后的圖片
<ImageView
android:id="@+id/iv_forground"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
MainActivity中配置界面
//配置界面
setContentView(R.layout.activity_main);
//找到容器里面的圖片視圖控件
//findViewById
forground = findViewById(R.id.iv_forground);
讀取原圖
//將需要操作的圖片讀取出來 Bitmap
//BitmapFactory 用于管理位圖
//decodeResource 從工程的資源路徑中去生成一張位圖
//getResources() 獲取工程的資源
//R.drawable.fr 訪問資源路徑下 drawable里面的一個文件名為fr的資源
orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.fr);
創(chuàng)建副本
//操作這張圖片 用透明色去替換某個位置的顏色
//不能操作原圖 只能copy一份
//創(chuàng)建一個和原始圖片相同環(huán)境的空位圖
copyBitmap = Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),
orgBitmap.getConfig());
圖片操作
//創(chuàng)建一個Canvas 畫布-現(xiàn)實中的畫板
canvas = new Canvas(copyBitmap);
//創(chuàng)建一個畫筆
paint = new Paint();
//創(chuàng)建一個矩陣
Matrix matrix = new Matrix();
/**
//旋轉(zhuǎn)圖片
//matrix.setRotate(90,1120,540);
//平移
//matrix.setTranslate(100,0);
//翻轉(zhuǎn) set只作用一次 post作用多次
matrix.setScale(-1f,1f);
matrix.postTranslate(orgBitmap.getWidth(),0);*/
//畫一幅圖
canvas.drawBitmap(orgBitmap,matrix,paint);
//顯示圖片
forground.setImageBitmap(copyBitmap);
添加觸摸事件
//給前景圖片添加touch事件
//當(dāng)有觸摸事件發(fā)生 系統(tǒng)就會將這個事件接收并回調(diào)這個事件
forground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
//獲取當(dāng)前事件
int action = event.getAction();
//判斷狀態(tài)
if (action == MotionEvent.ACTION_MOVE){
//獲取觸摸點的坐標
int x = (int)event.getX();
int y = (int)event.getY();
//替換x,y對應(yīng)的像素
for(int i = -15 ; i < 15 ; i++)
for (int j = -15; j < 15; j++) {
copyBitmap.setPixel(x+i,y+j,Color.TRANSPARENT);
}
forground.setImageBitmap(copyBitmap);
}
return true;
}
});
demo存在問題:
- 手畫出屏幕 x,y超出圖片尺寸越界就閃退
- 觸摸點位置和劃線位置不一致 圖片尺寸和屏幕尺寸不匹配
- apk未簽名沪停,apk不能正常安裝
心得感悟:
今天剛正式進入到了Android階段煤辨,對如何添加圖片,如何給app改名木张、改圖標都有了一定的了解众辨。撕衣服小demo雖然不是很健康但是還是挺有意思的。給我的感覺是不算特別難舷礼,但是需要熟知很多控件等的用法鹃彻。還有就是生成的app上傳后的apk無法正常安裝,需要了解一下其如何給apk簽名妻献,然后就可以傳給朋友show一下了蛛株。安卓階段的確要有趣一些,要在好好學(xué)習(xí)安卓開發(fā)的同時育拨,再抽出足夠的時間去熟習(xí)之前C谨履、Java的知識。