編輯:關於Android編程
今天我們學習撕衣服。我先說一下撕衣服的原理: 撕衣服有2張圖片,一張是美女穿外衣的圖片,一張是美女穿內衣的圖片。當我們手指滑動後,然後將美女穿外衣衣服的圖片設置為透明色,這樣下面的圖片就顯示出來了。
直接上代碼:
public class MainActivity extends Activity { private Bitmap bmpCopy; private Paint paint; private Canvas canvas; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1: 因為我修改外衣的圖片,所以要給外衣設置副本 Bitmap bmpSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi); bmpCopy = Bitmap.createBitmap(bmpSrc.getWidth(), bmpSrc.getHeight(), bmpSrc.getConfig()); paint = new Paint(); canvas = new Canvas(bmpCopy); canvas.drawBitmap(bmpSrc, new Matrix(), paint); imageView = (ImageView) findViewById(R.id.lv2); imageView.setImageBitmap(bmpCopy); //2:監聽觸摸事件 imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //我們只關心滑動事件 switch (event.getAction()) { case MotionEvent.ACTION_MOVE: //手指滑動的軌跡設置為透明色 int x = (int) event.getX(); int y = (int) event.getY(); cleanImage(x, y); break; default: break; } return true; } }); } //因為每次只設置1個像素,這樣很慢 public void cleanImage(int x, int y) { for(int i = -10; i < 10; i++) { for(int j = -10; j < 10; j++) { //繪制以x,y為圓心半徑為10的圓 if(Math.sqrt(i*i + j*j) <= 10) { //判斷手指是否越界, 如果越界不處理 if(x+i < bmpCopy.getWidth() && y+j < bmpCopy.getHeight() && x+i >=0 && y+j >=0) { //設置透明色 bmpCopy.setPixel(x+i, y+j, Color.TRANSPARENT); //設置圖像 imageView.setImageBitmap(bmpCopy); } } } } } }
今天面試的時候,面試官和我說起同步和異步,因為說起同步我就是想到線程同步,然後共享臨界資源啊死鎖啊什麼的,所以一直在說這個,線程異步倒是從來沒聽過。剛才看了場球想起這件事
現在很多app都用到了頭像的功能,我的項目中也用到了。頭像上傳分幾步:1.獲取頭像2.剪裁頭像3.文件上傳4.服務器的接受保存首先第一步,無非就是兩種方式1,拍照2,相冊
在有心課堂的群裡,有網友提出如下場景:當前開發的 App 遇到一個問題:當請求某個接口時,由於 token 已經失效,所以接口會報錯。但是產品經理希望 app 能夠馬上刷
前言在Android開發中,View一直是Android開發人員的一塊心病,一方面想要進階,一方面又害怕進階,可以說Android的View是進階路上的最大絆腳石,因為它