1. 程式人生 > >Popupwindow在指定的x,y座標顯示

Popupwindow在指定的x,y座標顯示

專案需求,要將SeekBar的值顯示有SeekBar上方的一個PopupWindow中,PopupWindow的位置要隨著SeekBar的滑塊變換。(之前發的程式碼經過幾次測試,發現不適應於大部分場景,現已經將SeekBar上顯示一個PopupWindow封閉成一個CustomView ,大家只要在xml中費用就可以,但是tips.xml一點要有哦)

直接上程式碼:(註釋很清楚)

ManaMySeekBar.java:(自定義的SeekBar)

<pre name="code" class="java">/**
 * 自定義seekbar
 * 
 * */
public class ManaMySeekBar extends SeekBar {
	 // 用來顯示彈窗text
	private PopupWindow mPopupWindow;
	private LayoutInflater mInflater;
	 //顯示進度textview
	private View mView;
	 //定義座標陣列  記錄當前x,y座標
	private int[] mPosition;
	private TextView mTvProgress;
	public ManaMySeekBar(Context context, AttributeSet attrs) {
		super(context, attrs);

		//載入PopupWindow上顯示的佈局
		mInflater = LayoutInflater.from(context);
		mView = mInflater.inflate(R.layout.tips, null);
		//佈局中的TextView 顯示seekBar的值
		mTvProgress = (TextView) mView.findViewById(R.id.tv_popu_menu);
		mPopupWindow = new PopupWindow(mView);
		//設定PopupWindow的背景
		  mPopupWindow.setBackgroundDrawable(getResources().getDrawable(
		 R.drawable.bg_charg));
		mPosition = new int[2];
	}

	//設定PopupWindow上顯示的內容
	public void setSeekBarText(String str) {
		mTvProgress.setText(str);
	}

	//獲得內容
	public String getstr() {

		return (String) mTvProgress.getText();
	}

	//觸控事件處理
	@Override
	public boolean onTouchEvent(MotionEvent event) {

		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			this.getLocationOnScreen(mPosition);
			mPopupWindow.showAsDropDown(this, (int) event.getX(), mPosition[1]
					- (int) this.getY() - this.getHeight() - 30);//
			break;
		case MotionEvent.ACTION_UP:
			mPopupWindow.dismiss();
			break;
		}
		return super.onTouchEvent(event);
	}


	//重寫OnDraw方法,更新PopupWindow的位置與顯示的值
	@Override
	protected synchronized void onDraw(Canvas canvas) {
		int thumb_x = this.getProgress() * (this.getWidth() / this.getMax());//根據進度值設定PopupWindow顯示的位置
		int middle = (int) this.getY() + this.getHeight();
		super.onDraw(canvas);

		if (mPopupWindow != null) {
			try {
				this.getLocationOnScreen(mPosition);
				mPopupWindow.update(thumb_x - 10, middle, 120, 100);//更新PopupWindow的位置與顯示的值
				setSeekBarText(String.valueOf(this.getProgress()));
			} catch (Exception e) {
			}
		}
	}
}




在要費用控制元件的佈局檔案引入自定義的SeekBar:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <mystery.honey.edittextinsertimagespan.ManaMySeekBar
        android:id="@+id/sb_point"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ll_body"
        android:layout_marginTop="220dp" />

</RelativeLayout>

還有就是 popupwindow裡的佈局檔案:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_popu_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:text="TextView" />
</LinearLayout>


最後看看效果圖吧:


相關推薦

Popupwindow指定x,y座標顯示

專案需求,要將SeekBar的值顯示有SeekBar上方的一個PopupWindow中,PopupWindow的位置要隨著SeekBar的滑塊變換。(之前發的程式碼經過幾次測試,發現不適應於大部分場景,現已經將SeekBar上顯示一個PopupWindow封閉成一個Cust

opencv之x, y座標和行列關係

opencv之x, y座標和行列關係 在opencv的影象座標系中,座標原點為左上角, x座標軸指向右方, y座標軸指向下方。 row == height == Point.y col == width == Point.x Mat::at(Point(x, y)) == Mat::at(y, x)

Excel轉Html(八)--POI-解析獲取合併單元格-按照X-Y座標解析-與handsontable資料展示/儲存一致

  public static List<DmFormMergedDto> getMergedCells(Sheet sheet, int rowIndex, int cellIndex, Long formId) {       &nbs

selenium直接用滑鼠點選(基於x,y座標)進行網頁爬取

 食品生產許可獲證企業(SC)的爬取 只有名字和編號 這個網站是動態載入,並對請求ur進行了加密l 所以使用selenium 但是,selenium使用不知道為什麼一旦進行了對頁面資料的操作後,就無法請求到下一頁的資料了,所以只能一頁一頁的請求不停的從第一頁跳轉,不能

matlab中plot()畫圖時指定X,Y軸的範圍

可以用matlab提供的座標軸設定函式axis進行設定(對當前座標軸進行設定),具體用法如下:plot(x, y); // 畫圖後用axis函式設定座標軸的範圍axis([xmin xmax ymin ymax]); % 設定座標軸在指定的區間xmin、xmax 表示

javascript獲得DOM元素X,Y座標的函式

以下是YUI用的函式: isSafari = (document.childNodes && !document.all && !navigator.taintEnabled); var getXY = function(el) {

如何在arcgis下使shp檔案自動生成點的X.Y座標

在點shp檔案中,點的座標資訊保存於shp檔案的shape欄位中,而不能直接看到座標。 我們可以通過提取點的經緯度並保存於點shp檔案的屬性表X(或經度)、Y(或緯度)欄位中。方法如下: 1)

echarts x/y座標文字過長解決辦法-換行

/** * Created by HanSon on 2016/1/24. */ function newline(option, number, axis){ /* 此處注意你的json是陣列還是物件 */ option[axis][0][

點選事件獲取滑鼠座標位置(x,y)值

$(document).click( function(event){ event = event || window.event;

Android 自定義PopupWindow指定位置或給定View座標彈出

PopupWindowHelper是一個根據View的位置顯示PopupWindow的一個工具類、彈出PopupWindow的位置會根據指定的View出現的位置而動態改變、本Demo是用Android Studio開發的、分為兩個Module、但我個人更習慣合到

ArcGIS 10.2匯入XY座標(經度、緯度),生成Shapefile點資料

       用過CASS的人都知道,野外數字測圖得到的點資料(平面座標)可以直接匯入到CASS中,進一步繪製地形圖。那麼,帶有座標的資料能不能在ArcGIS中實現點圖層的生成呢?答案是必須的!       本文以氣象臺站shp資料的生成為例,詳細介紹ArcGIS 10.2中

echarts x座標文字顯示不全

在echarts中應用柱狀圖或者折線圖時,當資料量過多的時候,X軸的座標就會顯示不全(如下圖圖一),在ECharts圖表元件內部有一個機制,用於統計xAxis座標刻度的個數和圖表寬度,從而會自動

使用jfreechart統計資料,生成折線圖(座標x,y值大小可以自己設定)

需求:一個目錄下包含多個txt檔案,每個txt檔案每行儲存一個數據,根據每個txt檔案的資料生成一個折線圖,y軸為每行的資料,x軸表示第幾行。 b.建立新的java工程時,依賴這2個jar包。 c.相關jfreechart介紹: org.jfree.chart.Char

python 使用matplotlib 實現從檔案中讀取xy座標的視覺化

1. test.txt檔案,資料以逗號分割,第一個資料為x座標,第二個為y座標,資料如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,422. python部分程式碼#

MOD(x,y)

-- uri new nbsp span 精確 ont 除法 sql MOD(x,y) 返回 x 被 y 除後的余數,MOD(x,y) 對於帶有小數部分的數值也起作用,它返回除法運算後的精確余數 mysql> SELECT MOD(31,8), MOD(234,10

POWER(x,y)

select pan sql class style clas blog mysq log POWER(x,y) 用於返回 x 的 y 次方的結果 mysql> SELECT POWER(2,4), POWER(2,-4); +------------+---

Java 遞歸解決 &quot;僅僅能兩數相乘的計算器計算x^y&quot; 問題

args power ava auth mod 每次 一個數 rac pre /** * 求一個數的乘方 * 求x^y,y是一個正整數。設計算器僅僅能計算兩數相乘,不能一次計算n個數相乘。 * 知:2^5=(2^2)^2*2; 2^6=(2^2

css文本超過指定行數隱藏顯示省略號

hit 彈性 設置 str 簡單的 換行 而是 kit mil 最近在做微信小程序的時候,遇到了顯示指定行數並且顯示省略號的問題,做個記錄: css的樣式是: overflow:hidden; //超出的文本隱藏 //省略號樣式, // text-overflow參數值和解

X-Y Problem

文章 leader 所有 技術人 信息 log cor 地理 phone X-Y Problem 對於X-Y Problem的意思如下: 有人想解決問題X   他覺得Y可能是解決X問題的方法     但是他不知道Y應該怎麽做       於是他去問別人Y應該怎

python matplotlib在mac os x 中如何顯示中文,完美解決

新的 com sub ttf 一行 lan HR tar spa 一、 下載相關的中文字體 simhei 文件: 下載地址 二、通過以下代碼查找matplotlib的數據存放位置: import matplotlib print(matplotlib.matplotlib