91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android中怎么自定義手表效果

發布時間:2021-08-11 13:54:58 來源:億速云 閱讀:138 作者:Leah 欄目:編程語言

android中怎么自定義手表效果,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

<?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:orientation="vertical" > <Button  android:id="@+id/btn_start"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="start" /> . <Button  android:id="@+id/btn_stop"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="stop" /> <ImageView  android:id="@+id/iv_clock"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_gravity="center"  android:src="@mipmap/ic_launcher" /></LinearLayout>

3.自定義view,顯示

package com.example.administrator.testz;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.util.Calendar;/** * 優化方案: * 表盤課繪制一次 * 在分線程中進行加載 */public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnStart, btnStop; private ImageView mClockImageView; Bitmap.Config config = Bitmap.Config.ARGB_8888; int width = 500; int height = 500; private Calendar mCalendar; private int mHour, mMinute, mSecond; private float mDegrees; private float length; private boolean mIsRunning; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btnStart = (Button) findViewById(R.id.btn_start);  btnStop = (Button) findViewById(R.id.btn_stop);  btnStop.setOnClickListener(this);  btnStart.setOnClickListener(this);  mClockImageView = (ImageView) findViewById(R.id.iv_clock);  mClockImageView.setImageBitmap(drawClock()); } /**  * 畫表盤  */ private Bitmap drawClockFace() {  Bitmap bm = Bitmap.createBitmap(width, height, config);  Canvas canvas = new Canvas(bm);  Paint paint = new Paint();  paint.setAntiAlias(true); //鋸齒  paint.setStyle(Paint.Style.STROKE); // 空心  paint.setStrokeWidth(5);  paint.setColor(Color.parseColor("#333333"));  // 外層圓  canvas.drawCircle(width / 2, height / 2, width / 2, paint);  // 內層圓 --》圓心  paint.setStyle(Paint.Style.FILL);  canvas.drawCircle(width / 2, height / 2, 10, paint);  // 循環畫刻度(旋轉畫刻度)  for (int i = 0; i < 12; i++) {   if (i % 3 == 0) {    paint.setStrokeWidth(10);    canvas.drawLine(width / 2, 0, width / 2, 24, paint);    canvas.rotate(30, width / 2, height / 2);   } else {    canvas.drawLine(width / 2, 0, width / 2, 10, paint);    canvas.rotate(30, width / 2, height / 2);   }  }  return bm; } private Bitmap drawClock() {  Bitmap bm = drawClockFace();  Canvas canvas = new Canvas(bm);  Paint paint = new Paint();  paint.setAntiAlias(true);  paint.setColor(Color.parseColor("#333333"));  mCalendar = Calendar.getInstance();  mHour = mCalendar.get(Calendar.HOUR);  mMinute = mCalendar.get(Calendar.MINUTE);  mSecond = mCalendar.get(Calendar.SECOND);  //畫小時指針  paint.setStrokeWidth(10);  mDegrees = mHour * 30 + mMinute / 2;  length = (width / 2) * 0.7f;  canvas.save();  canvas.rotate(mDegrees, width / 2, height / 2);  canvas.drawLine(width / 2, height / 2, width / 2, height - (height / 2) - length, paint);  canvas.restore();//  canvas.rotate(360 - mDegrees, width / 2, height / 2);  //畫分鐘指針  paint.setStrokeWidth(4);  mDegrees = mMinute * 6 + mSecond / 10;  length = (width / 2) * 0.78f;  canvas.save();  canvas.rotate(mDegrees, width / 2, height / 2);  canvas.drawLine(width / 2, height / 2, width / 2, height - (height / 2) - length, paint);  canvas.restore();//  canvas.rotate(360 - mDegrees, width / 2, height / 2);  //畫分鐘指針  paint.setStrokeWidth(2);  mDegrees = mSecond * 6;  length = (width / 2) * 0.92f;  canvas.save();  canvas.rotate(mDegrees, width / 2, height / 2);  canvas.drawLine(width / 2, height / 2, width / 2, height - (height / 2) - length, paint);  canvas.restore();  return bm; } @Override public void onClick(View v) {  switch (v.getId()) {   case R.id.btn_start:    mIsRunning = true;    new ClockTask().execute("");    break;   case R.id.btn_stop:    mIsRunning = false;    break;  } } @Override protected void onDestroy() {  super.onDestroy();  mIsRunning = false; } private class ClockTask extends AsyncTask<Object, Object, Object> {  @Override  protected Object doInBackground(Object... objects) {   while (mIsRunning) {    publishProgress("");    try {     Thread.sleep(1000);    } catch (InterruptedException e) {     e.printStackTrace();    }   }   return null;  }  @Override  protected void onProgressUpdate(Object... values) {   super.onProgressUpdate(values);   mClockImageView.setImageBitmap(drawClock());  } }}

看完上述內容,你們掌握android中怎么自定義手表效果的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀化市| 龙山县| 太仓市| 于都县| 赤水市| 德保县| 金溪县| 连江县| 买车| 旬阳县| 临湘市| 呼玛县| 白朗县| 高邮市| 龙里县| 辽源市| 西华县| 盐池县| 明溪县| 仙游县| 杭州市| 禄丰县| 拜城县| 霍州市| 大城县| 门头沟区| 启东市| 万年县| 武夷山市| 蚌埠市| 永吉县| 邛崃市| 海林市| 威信县| 会昌县| 波密县| 乐陵市| 盐源县| 绥滨县| 平顶山市| 芷江|