縮放系列(二):所有子控制元件也隨著縮放、手勢縮放、多點觸控layout
下面是一個功能強大的改造的例子:
可以實現以下需求:
1.兩個手指進行縮放佈局
2.所有子控制元件也隨著縮放,
3.子控制元件該有的功能不能丟失(像button有可被點選的功能,縮放後不能丟失該功能)
執行效果圖:
java程式碼如下
MainActivity.java:
public class MainActivity extends ActionBarActivity { private ScaleGestureDetector mScaleGestureDetector = null; private View view; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.test); view = View.inflate(this, R.layout.activity_main, null); setContentView(view); mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { // 返回給ScaleGestureDetector來處理 return mScaleGestureDetector.onTouchEvent(event); } public class ScaleGestureListener implements ScaleGestureDetector.OnScaleGestureListener { private float scale; private float preScale = 1;// 預設前一次縮放比例為1 @Override public boolean onScale(ScaleGestureDetector detector) { float previousSpan = detector.getPreviousSpan(); float currentSpan = detector.getCurrentSpan(); if (currentSpan < previousSpan) { // 縮小 // scale = preScale-detector.getScaleFactor()/3; scale = preScale - (previousSpan - currentSpan) / 1000; } else { // 放大 // scale = preScale+detector.getScaleFactor()/3; scale = preScale + (currentSpan - previousSpan) / 1000; } // 縮放view ViewHelper.setScaleX(view, scale );// x方向上縮小 ViewHelper.setScaleY(view, scale );// y方向上縮小 return false; } @Override public boolean onScaleBegin(ScaleGestureDetector detector) { // 一定要返回true才會進入onScale()這個函式 return true; } @Override public void onScaleEnd(ScaleGestureDetector detector) { preScale = scale;//記錄本次縮放比例 } } }
佈局檔案(activity_main.xml):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/home_tools" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="測試" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/abc_ic_voice_search_api_holo_light" /> <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/selector_button2" /> <ImageButton android:id="@+id/imageButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/selector_button1" android:layout_gravity="center" /> </LinearLayout>
selector_button1.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/home_tools" android:state_pressed="true"></item> <item android:drawable="@drawable/home_trojan"></item> </selector>
selector_button2.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/home_sysoptimize" android:state_pressed="true"></item>
<item android:drawable="@drawable/home_taskmanager"></item>
</selector>
如果想要整個佈局能夠移動,可以看下面的帖子:
原始碼地址:https://github.com/Jszgw/ScaleLayout2相關推薦
縮放系列(二):所有子控制元件也隨著縮放、手勢縮放、多點觸控layout
下面是一個功能強大的改造的例子: 可以實現以下需求: 1.兩個手指進行縮放佈局 2.所有子控制元件也隨著縮放, 3.子控制元件該有的功能不能丟失(像button有可被點選的功能,縮放後不能丟失該功能) 執行效果圖: java程式碼如下 MainActi
ASP.NET AJAX入門系列(5):使用UpdatePanel控制元件(二)
{ if (String.IsNullOrEmpty(FirstNameTextBox.Text) || String.IsNullOrEmpty(LastNameTextBox.Text)) { return; } int emplo
縮放系列(三):一個可以手勢縮放、拖拽、旋轉的layout
弄了一個下午,終於搞出來了,PowerfulLayout 下面是一個功能強大的改造的例子: 可以實現以下需求: 1.兩個手指進行縮放佈局 2.所有子控制元件也隨著縮放, 3.子控制元件該有的功能不能丟失(像button有可被點選的功能,縮放後不能丟失該功能)
容器開啟數據服務之旅系列(二):Kubernetes如何助力Spark大數據分析
容器 控制臺 摘要: 容器開啟數據服務之旅系列(二):Kubernetes如何助力Spark大數據分析 (二):Kubernetes如何助力Spark大數據分析 概述 本文為大家介紹一種容器化的數據服務Spark + OSS on ACK,允許Spark分布式計算節點對阿裏雲OSS對象存儲的直接訪問。
JavaScript夯實基礎系列(二):閉包
情況 全局環境 賦值 命名 因此 沒有 部分 .com 查詢 ??在JavaScript中函數是一等公民。所謂一等公民是指函數跟其他對象一樣,很普通,可以進行把函數存在數組中、作為參數傳遞、賦值給變量等操作。當函數作為另一個函數的返回值在外部調用時,跟該函數在函數內部調用時
ELK系列(二):.net core中使用ELK
正常 etc () 完成後 class -c tro 訪問 ret ELK安裝好後,我們現在.net Core中使用一下,大體思路就是結合NLog日誌組件將數據寫入ELK中,其它語言同理。 ELK的安裝還是有些復雜的,我們也可以在Docker中安裝ELK:docker ru
eShopOnContainers學習系列(二):數據庫連接健康檢查
技術分享 負載 star bsp 方法 containe 需要 正常 連接 項目裏使用數據庫的時候,我們有時候需要知道數據庫當前的健康狀態,特別是當數據庫連接不上的時候能夠立馬獲悉。eShopOnContainers裏存在著大量的服務健康、連接健康的檢查,數據庫連接是其中之
linux系列(二):cd命令
1、命令格式: cd [目錄名] 2、命令功能: 切換當前目錄至目錄名目錄 3、常用例項 (1)、進入系統根目錄 命令: cd / 輸出: [email protected]:~/軟體$ cd / [email protected]-computer:/
Windows Service 學習系列(二):C# windows服務:安裝、解除安裝、啟動和停止Windows Service
一、通過CMD安裝、解除安裝、啟動、停止Windows Service 方法一 1.以管理員身份執行cmd 2.安裝windows服務 切換cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(InstallUtil.e
faster rcnn pytorch 復現系列(二):generate_anchors原始碼解析
目錄 1. 總函式 generate_anchors 2. 函式分功能寫,首先是ratios的實現,其次是scale的實現 3. anchor2WHXY函式+WsHsXsYs2anchors函式[s表示複數] 4. _ratio_enum(anchor,r
Fragment全解析系列(二):正確的使用姿勢
Fragment是可以讓你的app縱享絲滑的設計,如果你的app想在現在基礎上效能大幅度提高,並且佔用記憶體降低,同樣的介面Activity佔用記憶體比Fragment要多,響應速度Fragment比Activty在中低端手機上快了很多,甚至能達到好幾倍!如果你的app當前或以後有移植平板等平臺時,
詳解SVM系列(二):拉格朗日對偶性
拉格朗日函式有什麼用? 在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉換為對偶問題,通過解對偶問題而得到原始問題的解。 原始問題: 假設 f (
Docker系列(二):通過Docker安裝使用 Kubernetes (K8s)
Docker社群版從17.12版本開始已經提供了對Kubernetes的支援。但是由於其安裝過程依賴的映象服務在國內訪問很不穩定,很多朋友都無法配置成功。我們提供了一個簡單的工具幫助大家開啟Docker社群版的Kubernetes功能。 我們需要先安裝好Docker CE的最新版,18.03 - 18.09
redis系列(二):資料操作
1、string型別 字串型別是Redis中最為基礎的資料儲存型別,它在Redis中是二進位制安全的,這便意味著該型別可以接受任何格式的資料,如JPEG影象資料或Json物件描述資訊等。在Redis中字串型別的Value最多可以容納的資料長度是512M。 (1)、儲存 如果設定的鍵不存在則新增,如果已存
STM32開發筆記48:STM32F4+DP83848乙太網通訊指南系列(二):系統時鐘
本章為系列指南第二章,主要是介紹一下STM32F4的時鐘配置。時鐘是一個嵌入式產品從零開始開發的基石,一切邏輯都在時鐘的節奏中安靜地彈奏著,時鐘為整個電路帶來了歡快的「心跳」。開發者如果對時鐘沒有控制能力,就會把脈不準整個旋律的節奏,從而導致諸如通訊波特率、通訊時序、延時操作等關鍵功能全都紊亂,系統
Web安全系列(二):XSS 攻擊進階(初探 XSS Payload)
什麼是 XSS Payload 上一章我談到了 XSS 攻擊的幾種分類以及形成的攻擊的原理,並舉了一些淺顯的例子,接下來,我就闡述什麼叫做 XSS Payload 以及從攻擊者的角度來初探 XSS 攻擊的威力。 在黑客 XSS 攻擊成功之後,攻擊者能夠對使用者當前瀏覽的頁面植入各種惡意指令碼,通過惡意指令碼來
image caption解讀系列(二):《Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Capt》
本文主要是在這篇部落格的基礎上結合程式碼進行分析。 文章依然採用了encoder-decoder的框架。作者認為decoder的時候非視覺詞多依賴的是語義資訊而不是視覺資訊。而且,在生成caption的過程中,非視覺詞的梯度會誤導或者降低視覺資訊的有效性。因此,本文提出
爬蟲入門系列(二):優雅的HTTP庫requests
爬蟲入門系列目錄: urllib、urllib2、urllib3、httplib、httplib2 都是和 HTTP 相關的 Python 模組,看名字就覺得很反人類,更糟糕的是這些模組在 Python2 與 Python3 中有很大的差異,如果業務程式碼要同時相容 2 和 3,寫起來
keras系列(二):模型設定
Keras模型簡介 Keras的初始構建塊是一個模型,最簡單的模型稱為序列。Keras序列模型是一個神經網路層的線性管道(一個堆疊)。 from keras.models import Sequential model = Sequential() model.
image caption解讀系列(二):《Show, Attend and Tell_Neural Image Caption》
一、相關工作 二、 基本思想 文章在NIC的基礎上加入了attention機制 三、模型結構 對LSTM部分做出的改動,其餘與NIC相同。 四、程式碼分析 (0)預處理 首先是把資料中長度大於2