电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Android 開發(fā)中不可不知的小技巧

瀏覽:4日期:2022-09-27 13:27:30

這里收集了大家常用的一些Android代碼,持續(xù)更新中,內容來自自己的平時積累和網(wǎng)絡上看到的文章,部分原文地址在最下方。如有錯誤歡迎指正,如有侵權,請聯(lián)系我刪除。里面可能會有重復內容,請忽略或者提醒我刪除。

setBackgroundResource(0) 可以移除 View 的背景色

Resources.getSystem().getDisplayMetrics().density 可以不用 Context 也能獲取屏幕密度哦

通過重載 ViewGroup 的 dispatchDraw 可以實現(xiàn)一個簡單的蒙版效果。 例如下拉刷新時,可以在 contentView 上加一層遮罩。 canvas.drawRect(0, mContentView.getTranslationY(), getWidth(), getHeight(), mMaskPaint);

new 出來的 View 可以用 View.generateViewId() (API 17 以上可用) 生成 id,系統(tǒng)保證唯一

使用 GridView時 android:padding 和 android:clipToPadding='false' 配合使用效果更好哦。

在布局文件中,如果只是為了占位,可以用 Space 來取代 View。 最棒的一點是Space可以跳過 Draw 這個過程。

TypedValue.applyDimension(int unit, float value, DisplayMetrics metrics) 方便dp, px, sp 之間的轉換。

Activity.startActivities() 這個方法最直接的理解就是使用intent開啟多個Activity

TextUtils.isEmpty() 如果傳入的String 為NULL或者Length為0的話就返回 true。

Html.fromHtml() 如果你對Html熟悉的話,可以很迅速通過這個方法處理一些富文本操作。比如超鏈接和圖文排版等處理。

TextView.setError() 設置文本框錯誤提醒

Build.VERSION_CODES 有些時候我們的app需要根據(jù)不同的SDK版本進行執(zhí)行不同的操作

PhoneNumberUtils.convertKeypadLettersToDigits 這個方法簡單粗暴,會將輸入的字母根據(jù)鍵盤上的映射轉換為數(shù)字。

ArgbEvaluator ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue);根據(jù)一個起始顏色值和一個結束顏色值以及一個偏移量生成一個新的顏色,分分鐘實現(xiàn)類似于微信底部欄滑動顏色漸變。

ValueAnimator.reverse() 順暢的取消動畫效果

DateUtils.formatDateTime()) 這個方法可以輸出相應格式化的時間或者日期

Pair 這個類 可以用來存儲存儲一”組”數(shù)據(jù)。但不是key和value的關系。

SparseArray 目前有很多地方從性能優(yōu)化方說使用SparseArray來替換hashMap,來節(jié)省內存,提高性能。

Linkify.addLinks() 這個類可以更方便的為文本添加超鏈接。

android.media.ThumbnailUtils這個類主要是用來處理縮略圖相關的工作,比如:用來獲取媒體(圖片、視頻)的縮略圖;

Bitmap.extractAlpha ();返回一個新的Bitmap,capture原始圖片的alpha值。有的時候我們需要動態(tài)的修改一個元素的背景圖片又不希望使用多張圖片的時候,通過這個方法,結合Canvas和Paint可以動態(tài)的修改一個純色Bitmap的顏色。

模塊間有消息需要傳遞時,使用LocalBroadcastManager替代Listener進行模塊解耦。除了解耦,這樣發(fā)送消息和執(zhí)行消息差一個線程循環(huán),可以減小方法的調用鏈,我這就碰到一次方法調用鏈太長導致StackOverflow的問題。

靜態(tài)變量不要直接或者間接引用Activity、Service等。這會使用Activity以及它所引用的所有對象無法釋放,然后,用戶操作時間一長,內存就會狂升。

Handler機制有一個特點是不會隨著Activity、Service的生命周期結束而結束。也就是說,如果你Post了一個Delay的Runnable,然后在Runnable執(zhí)行之前退出了Activity,Runnable到時間之后還是要執(zhí)行的。如果Runnable里面包含更新View的操作,程序崩潰了。

不少人在子線程中更新View時喜歡使用Context.runOnUiThread,這個方法有個缺點,就是一但Context生命周期結束,比如Activity已經銷毀時,一調用就會崩潰。

SharedPreferences.Editor.commit這個方法是同步的,一直到把數(shù)據(jù)同步到Flash上面之后才會返回,由IO操作的不可控,盡量使用apply方法代替。apply只在API Level>=9才會支持,需要做兼容。不過,最新的 support v4 包已經為我們做好了處理,使用 SharedPreferencesCompat.EditorCompat.getInstance().apply(editor) 即可。

PackageManager.getInstalledPackages這個方法經常使用,你可能不知道,當獲取的結果數(shù)量比較多的時候,在某些機型上面調用它花費的時間可能秒級的,所以盡量在子線程中使用。另外,如果結果太多,超過系統(tǒng)設置的Binder數(shù)據(jù)最大傳輸量的上限,則會發(fā)生TransactionException,如果你使用這個方法獲取機器上的己安裝應用列表,最好做一下預防。

如果使用Context.startActivity啟動外部應用,最好做一下異常預防,因為尋找不到對應的應用時,會拋出異常。如果你要打開的是應用內的Activity,不防使用顯式Intent,這樣能提高系統(tǒng)搜索目標Activity的效率。

Application的生命周期就是進程的生命周期。只有進程被干掉時,Application才會銷毀。哪怕是沒有Activity、Service在運行,Application也會存在。所以,為了減少內存壓力,盡量不要在Application里面引用大對象、Context等。

getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);設置全屏方法一定要在setContentView之后

viewpager 的 setCurrentItem 一定要在 setAdapter 方法之后調用才會有效果.

判斷手機是不是飛行模式 boolean isEnabled = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;

TabLayout 修改字體的方法 官方的 TabLayout 沒有提供修改 TextView size 的方法,可以新建一個 style CustomTabLayoutTextAppearance 繼承 TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse ,然后增加 item ,設置 android:textAllCaps 為 true ,再設置 android:textSize 為你想設置的大小。 Android 開發(fā)中不可不知的小技巧Android 開發(fā)中不可不知的小技巧

RecyclerView在23.2.+的版本中新增了自動測量的功能,由于新增了自動測量,那么它的item的根布局在需要測量的方向上就不能寫match_parent了,需要改成wrap_content

getParent().requestDisallowInterceptTouchEvent(true);剝奪父view對touch事件的處理權,誰用誰知道。

Canvas中clipRect、clipPath和clipRegion剪切區(qū)域的API。

GradientDrawable 有個陰影效果還不錯,以為是切的圖片,一看代碼,什么鬼= =!

有朋友提到了在自定義View時有些方法在開啟硬件加速的時候沒有效果的問題,在API16之后確實有很多方法不支持硬件加速,通常我們關閉硬件加速都是在清單文件中通過,其實android也提供了針對特定View關閉硬件加速的方法,調用View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);即可。

PointF,graphics包中的一個類,我們經常見到在處理Touch事件的時候分別定義一個downX,一個downY用來存儲一個坐標,如果坐標少還好,如果要記錄的坐標過多那代碼就不好看了。用PointF(float x, float y);來描述一個坐標點會清楚很多。

StateListDrawable,定義Selector通常的辦法都是xml文件,但是有的時候我們的圖片資源可能是從服務器動態(tài)獲取的,比如很多app所謂的皮膚,這種時候就只能通StateListDrawable來完成了,各種addState即可。

android:duplicateParentState='true',讓子View跟隨其Parent的狀態(tài),如pressed等。常見的使用場景是某些時候一個按鈕很小,我們想要擴大其點擊區(qū)域的時候通常會再給其包裹一層布局,將點擊事件寫到Parent上,這時候如果希望被包裹按鈕的點擊效果對應的Selector繼續(xù)生效的話,這時候duplicateParentState就派上用場了。

ViewConfiguration.getScaledTouchSlop();觸發(fā)移動事件的最小距離,自定義View處理touch事件的時候,有的時候需要判斷用戶是否真的存在movie,系統(tǒng)提供了這樣的方法。

ViewStub,有的時候一塊區(qū)域需要根據(jù)情況顯示不同的布局,通常我們都會通過setVisibility的方法來顯示和隱藏不同的布局,但是這樣默認是全部加載的,用ViewStub可以更好的提升性能。

onTrimMemory,在Activity中重寫此方法,會在內存緊張的時候回調(支持多個級別),便于我們主動的進行資源釋放,避免OOM。

TextView.setCompoundDrawablePadding,代碼設置TextView的drawable padding。

ImageSwitcher,可以用來做圖片切換的一個類,類似于幻燈片。

在自定義控件的時候,能用drawable來繪制圓,或者其他樣式的時候,盡量用drawable,因為drawable的效果要遠勝于canvas.drawXXX().

如果想要自定義View支持SwipeRefreshLayout,只需要聲明并實現(xiàn)ScrollingView接口即可,RecyclerView和NestedScrollView已經實現(xiàn)此接口。

AtomicFile——通過使用備份文件進行文件的原子化操作。這個知識點之前我也寫過,不過最好還是有出一個官方的版本比較好。

DatabaseUtils——一個包含各種數(shù)據(jù)庫操作的使用工具。

Activity.isChangingConfigurations ()——如果在 Activity 中 configuration 會經常改變的話,使用這個方法就可以不用手動做保存狀態(tài)的工作了。

SearchRecentSuggestionsProvider——可以創(chuàng)建最近提示效果的 provider,是一個簡單快速的方法。

android:clipChildren (ViewGroup)——如果此屬性設置為不可用,那么 ViewGroup 的子 View 在繪制的時候會超出它的范圍,在做動畫的時候需要用到。

android:fillViewport (ScrollView)——在這片文章中有詳細介紹文章鏈接,可以解決在 ScrollView 中當內容不足的時候填不滿屏幕的問題。

android:tileMode (BitmapDrawable)——可以指定圖片使用重復填充的模式。

android:enterFadeDuration/android:exitFadeDuration (Drawables)——此屬性在 Drawable 具有多種狀態(tài)的時候,可以定義它展示前的淡入淡出效果。

Log.wtf()的意思是What a Terrible Failure,而不是What The Fuck!

使用RenderScript虛化圖片效果。如果你的app的minSDK為16或者更低,你需要使用support模式,因為很多方法都是在API 17之后添加的。renderscriptTargetApi最高到23,但是你應該把它設置到能保持腳本中使用到的功能完整的最低API。如果你想在support模式下target API 21+你必須使用gradle-plugin 2.1.0 和 buildToolsVersion “23.0.3” 或者以上。需要在gradle中添加renderscriptTargetApi 18,renderscriptSupportModeEnabled true 這兩句話

public static Bitmap blurBitmap(Context context, Bitmap src, int radius) { Bitmap dest = src.copy(src.getConfig(), true); RenderScript rs = RenderScript.create(context); Allocation allocation = Allocation.createFromBitmap(rs, src); Type t = allocation.getType(); Allocation blurredAllocation = Allocation.createTyped(rs, t); ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));blurScript.setRadius(radius);blurScript.setInput(allocation);blurScript.forEach(blurredAllocation);blurredAllocation.copyTo(dest);allocation.destroy();blurredAllocation.destroy();blurScript.destroy();t.destroy();rs.destroy(); return dest; }

如果想把一個view保存為Bitmap,正常情況下用第一種方法就可以了,但是如果是ScrollView,則必須采用第二種方法。 Android 開發(fā)中不可不知的小技巧

當Activity LauncherMode 為singleTask singleInstance時,使用startActivityForResult會立馬返回,不能正常調用。具體請看http://www.360doc.com/content/15/0123/14/12928831_443085580.shtml

當PopupWindow中有EditText控件時,因為Popupwindow 默認沒有獲取到焦點,需要手動設置焦點,這樣子view才能獲取到事件的監(jiān)聽。所以你需要在創(chuàng)建完popwindow后設置他的焦點,popupWindow.setFocusable(true);就可以讓EditText獲取焦點。

PopupWindow默認點擊外部的時候不消失,需要對PopupWindow 設置一個背景圖popWindow.setBackgroundDrawable(new BitmapDrawable());要創(chuàng)建一個空對象,設置為null是不行的,或者就創(chuàng)建一個全透明的背景圖。

android中的序列化官方推薦Parceble,其實Parceble最好用于內存之間數(shù)據(jù)的交換,如果要把數(shù)據(jù)寫入硬盤的話,推薦實現(xiàn)Serializable

tools標簽可以很好的幫助開發(fā)者實時預覽xml的效果,并且運行以后tools標簽的內容不會展示出來.例如:

<TextView android:layout_width='match_parent' android:layout_height='wrap_content' tools:text='這段話只在預覽時能看到,運行以后就看不到了' />android studio 2.1起已經支持jdk8了,使用的時候要在gradle中加上,需要把buildToolsVersion更新到24以上的版本

android { defaultConfig { ... jackOptions {enabled true }} ... compileOptions {targetCompatibility 1.8sourceCompatibility 1.8 }}

6.0之后getResources().getColor()方法被廢棄了,大家可以用ContextCompat.getColor(context, R.color.color_name)替換,ContextCompat 是 v4 包里的,請放心使用,另外還有getDrawable()等方法

圖片的資源文件官方推薦只把launcher放在mipmap文件夾下面,而app用到的資源文件建議放在drawable下面。

SharedPreference.Editor的apply是異步操作,不會返回成功的狀態(tài),而commit是同步操作,因此,在多個并發(fā)的提交commit的時候,他們會等待正在處理的commit保存到磁盤后再操作下一個數(shù)據(jù),從而降低了效率。

如果你在 manifest 中把一個 activity 設置成 android:windowSoftInputMode='adjustResize',那么 ScrollView(或者其它可伸縮的 ViewGroups)會縮小,從而為軟鍵盤騰出空間。但是,如果你在 activity 的主題中設置了 android:windowFullscreen='true',那么 ScrollView 不會縮小。這是因為該屬性強制 ScrollView 全屏顯示。然而在主題中設置 android:fitsSystemWindows='false' 也會導致 adjustResize 不起作用

在Android 4.0以后,在Manifest.xml中靜態(tài)注冊的廣播,程序安裝后必須啟動一次才能接收到廣播,比如你的應用監(jiān)聽開機啟動的廣播,必須要你的程序被運行過才能監(jiān)聽到

Activity的onDestory方法調用時機是不確定的(有時候離開界面很久之后才會調用onDestory方法),應該避免指望通過onDestory方法去釋放與Activity相關的資源,否則會導致一些隨機bug

2.X時代Bitmap對象雖然存儲在堆內存中,但是用了一個byte數(shù)組存儲其像素信息。通過計數(shù)器來記錄該像素信息被引用的個數(shù)。有人認為這個byte數(shù)組在native堆中,但事實上它也在堆中。只有在使用者調用recycle()后,Bitmap對象才會釋放像素信息,才會在失去引用后被垃圾回收機制銷毀。再加上DVM的heap size有嚴格的閥值,所以在使用大量圖片資源的時候,及其容易發(fā)生OOM。解決辦法一般都是,用一個哈希表存儲Bitmap對象的軟引用,作為內存緩存,并在適當時機掉用其recycle()。3.0以上版本Bitmap對象可以通過垃圾回收機制完全銷毀,理論上不用再調用recycle()。

.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:

git rm -r --cached .git add .git commit -m ’update .gitignore’

時間戳請使用long或者String類型接收,遇到的坑,由于項目中的model好多都是通過GsonFormat生成的,服務器給的json中的時間戳都是10位的,導致了GsonFormat自動解析成了int, 當測試人員選擇時間為2100年的時候時間戳是4開頭的十位 用int類型接收越界了,導致報錯

為你的app添加默認布局樣式,比如:每一個控件都需要寫width和height屬性,然而很多的控件的寬高屬性都是wrap_content,那么我們可以通過在style文件添加如下樣式:

<style name='Theme.YourApp' parent='android:style/Theme.Light'> <item name='android:layout_width'>wrap_content</item> <item name='android:layout_height'>wrap_content</item></style>

這樣,控件的寬高默認都是wrap_content樣式啦。

在style中寫的樣式通過視同parent標簽來擴展你的樣式,這樣更高效。

<style name='Fill'> <item name='android:layout_width'>fill_parent</item> <item name='android:layout_height'>fill_parent</item></style><style name='Fill.Height' parent='@style/Fill'> <item name='android:orientation'>vertical</item></style>Android上的應用切換按鈕列出的其實不是應用而是Task,所以你會看到有的應用在切換視圖里有多個任務。如果你的應用中有邏輯上相互獨立的部分,或者想在多窗口環(huán)境下并排顯示應用的兩個不同部分,這種情況就適合多任務了。使用manifest屬性(靜態(tài))或者 intent flags(動態(tài))可以實現(xiàn)這一點,詳見視頻:http://v.youku.com/v_show/id_XMTU2ODk4NDg2NA==.html?f=26587294

Android 開發(fā)中不可不知的小技巧

當app的theme用的是NoActionBar,但是在layout中仍然用到toolbar的時候,不要在style文件中加fitsSystemWindows屬性,而是在用到toolbar的layout最外層加fitsSystemWindows,否則當你使用EditText,在小米手機上長按EditText調出系統(tǒng)粘貼功能的時候,粘貼的layout的布局會錯位.

當WebView與ScrollView嵌套使用,并且WebView有字體放大縮小的功能時,當切換webview的字體后,webview的高度并不能很好的計算出來,這時候可以通過注入的方式,讓js算出高度,經測試,這樣是最可靠的,代碼地址:http://blog.csdn.net/jys1115/article/details/43525979

Context類中的createPackageContext(packageName, flags)方法,可用來獲取指定包名應用程序的Context對象。

TextView類的setKeyListener(KeyListener)方法; 其中DigitsKeyListener類,使用getInstance(String accepted)方法即可指定EditText可輸入字符集;

View類中的getLocationInWindow(int[])方法和getLocationOnScreen(int[])方法,獲取View在窗口/屏幕中的位置;

摘自如下地址(部分):http://oakzmm.com/2015/08/04/cool-Android-api/ http://oakzmm.com/2015/08/11/cool-Android-api-2/ http://weibo.com/liangfeizc?from=feed&loc=nickname http://zhuanlan.zhihu.com/zmywly8866/20309921 http://www.zhihu.com/question/33636939 http://gold.xitu.io/entry/56c2b9b779bc4400540894ac https://www.zhihu.com/question/33636939/answer/57239990?group_id=612750833369153536 http://mp.weixin.qq.com/s?__biz=MzA4MTM2MjE2MA==&mid=2650836293&idx=3&sn=2624066ababb6b613634015f54ea19b6&scene=0#wechat_redirect http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0504/4205.html https://zhuanlan.zhihu.com/p/20309921 http://www.pfeng.org/archives/840#123-tsina-1-92600-1bb80a0982f5c2ea1fcaf67d7fdce2f1 License

Copyright 2016 NewTabLicensed under the Apache License, Version 2.0 (the 'License');you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an 'AS IS' BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.

標簽: Android
相關文章:
主站蜘蛛池模板: 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 自动焊锡机_点胶机_螺丝机-锐驰机器人 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 国标白水泥,高标号白水泥,白水泥厂家-淄博华雪建材有限公司 |