国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Android實現儀表盤控件開發

瀏覽:81日期:2022-09-18 13:34:15

儀表盤在工業軟件中很常見,今天整一個圖片式儀表盤控件(非幾何圖形繪制)。實現非常簡單,一張背景圖,一張指針。創建一個RelativeLayout布局文件,然后在里面布置好控件的位置,代碼如下

<?xml version='1.0' encoding='utf-8'?><RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='wrap_content' android:layout_height='wrap_content'> <ImageViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_centerInParent='true'android:src='http://www.cgvv.com.cn/bcjs/@mipmap/meter_h_bk' /> <ImageViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_alignBottom='@id/id_dial'android:layout_centerInParent='true'android:src='http://www.cgvv.com.cn/bcjs/@mipmap/meter_fr' /> <com.tech.view.DigitalTextandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_alignBottom='@id/id_dial'android:layout_centerHorizontal='true'android:layout_marginBottom='2dp'android:text='29.9'android:textColor='@android:color/white'android:textSize='21sp' /></RelativeLayout>

DigitalText是使用第三方字體控件,這個可自行百度搜索想要的字體。然后寫一個儀表盤控件類,DialBoard

代碼如下

public class DialBoard { private static final String TAG = DialBoard.class.getName(); private ImageView dialPoint; private TextView text; private static final float MAX = 120.0f; private static final float MIN = -120.0f; private boolean animationDone = true; public DialBoard(Activity activity) {dialPoint = activity.findViewById(R.id.id_dial_point);text = activity.findViewById(R.id.id_value);text.setText(String.format('%.02f', 0.0f));setRotation(MIN, true); } public synchronized void moveTo(float progress) {if (animationDone) new Thread(() -> move(progress)).start(); } private void move(float progress) {animationDone = false;float offset = (MAX - MIN) / 100;final float STEP = 2.0f;//理論上要小于offsetfloat curProgress = (dialPoint.getRotation() - MIN) / offset;//計算當前進度和目標進度方向,步數float value = Math.abs(curProgress - progress);while (value > 0.1f) { value = (value < 1.0f ? 0.2f : STEP); if (progress < curProgress) value = -value; setRotation(dialPoint.getRotation() + value, false); Tools.sleep(10); curProgress = (dialPoint.getRotation() - MIN) / offset; value = Math.abs(curProgress - progress); final float textValue = curProgress; text.post(() -> text.setText(String.format('%.02f', textValue)));}text.post(() -> text.setText(String.format('%.02f', progress)));animationDone = true; } /** * @param rotation MIN~MAX */ public void setRotation(float rotation) {this.setRotation(rotation, false); } private void setRotation(float rotation, boolean onCreate) {if (onCreate) { int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); dialPoint.measure(w, h);//測量控件大小}int width = dialPoint.getMeasuredWidth();int height = dialPoint.getMeasuredHeight();dialPoint.post(() -> { dialPoint.setPivotX(width * 0.5f); dialPoint.setPivotY(height * 0.82666f); dialPoint.setRotation(rotation);}); }}

最終效果圖

Android實現儀表盤控件開發

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 伊人久久大香线焦综合四虎 | 亚洲欧美日韩国产 | 亚洲最新视频在线观看 | 亚洲美女影院 | 国产成人精品综合久久久软件 | 一级特黄色毛片免费看 | 久久国产精品永久免费网站 | 国产美女动态免费视频 | 九九热视频在线播放 | 久久综合精品国产一区二区三区 | 亚洲精品亚洲人成在线 | 99欧美视频 | 国产精品亚洲玖玖玖在线靠爱 | 男女生性毛片免费观看 | 黄色欧美视频 | 国产精品亚洲国产三区 | 国产一级做a爰片久久毛片99 | 一区二区三区网站在线免费线观看 | 三级午夜三级三点在看 | 免费的一级片网站 | 综合在线视频精品专区 | 久久精品国产亚洲综合色 | 成人午夜免费在线观看 | 成人免费网站视频 | 国产v欧美v日韩在线观看 | 欧美一级视频 | 欧美一级毛片免费高清aa | 亚洲人成在线观看 | 久久亚洲精品中文字幕 | 免费v片视频在线观看视频 免费v片在线观看 | 国产精品久久久久久久久久久久久久 | 亚洲精国产一区二区三区 | 九九九国产 | 欧洲一级毛片免费 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 久久99国产精一区二区三区! | 欧美啪啪一级毛片 | 国产美女做爰免费视频软件 | 污全彩肉肉无遮挡彩色 | 一级毛片免费不卡夜夜欢 | 曰本黄页 |