package com.seekbar.demo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsSeekBar;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.TextView;
public class ManaMySeekBar extends SeekBar {
private PopupWindow mPopupWindow;
private LayoutInflater mInflater;
private View mView;
private int[] mPosition;
private final int mThumbWidth = 25;
private TextView mTvProgress;
public ManaMySeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(context);
mView = mInflater.inflate(R.layout.popwindow_layout, null);
mTvProgress = (TextView)mView.findViewById(R.id.tvPop);
mPopupWindow = new PopupWindow(mView, mView.getWidth(),
mView.getHeight(), true);
mPosition = new int[2];
}
public void setSeekBarText(String str){
mTvProgress.setText(str);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
this.getLocationOnScreen(mPosition);
mPopupWindow.showAsDropDown(this, (int) event.getX(),
mPosition[1] - 30);
break;
case MotionEvent.ACTION_UP:
mPopupWindow.dismiss();
break;
}
return super.onTouchEvent(event);
}
private int getViewWidth(View v){
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
v.measure(w, h);
return v.getMeasuredWidth();
}
private int getViewHeight(View v){
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
v.measure(w, h);
return v.getMeasuredHeight();
}
@Override
protected synchronized void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
int thumb_x = this.getProgress() * (this.getWidth() - mThumbWidth)
/ this.getMax();
int middle = this.getHeight() / 2+40;
super.onDraw(canvas);
if (mPopupWindow != null) {
try {
this.getLocationOnScreen(mPosition);
mPopupWindow.update(thumb_x+mPosition[0] - getViewWidth(mView) / 2+mThumbWidth/2,
middle,getViewWidth(mView),getViewHeight(mView));
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SeekBarDemo.zip (30个子文件)
SeekBarDemo
.project 847B
project.properties 360B
proguard.cfg 1KB
src
com
seekbar
demo
SeekBarDemoActivity.java 1KB
ManaMySeekBar.java 3KB
AndroidManifest.xml 740B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
popwindow_bg.9.png 2KB
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
layout
popwindow_layout.xml 532B
main.xml 502B
values
strings.xml 188B
assets
gen
com
seekbar
demo
R.java 912B
.classpath 364B
bin
resources.ap_ 13KB
SeekBarDemo.apk 18KB
classes
com
seekbar
demo
R$layout.class 428B
R$drawable.class 437B
ManaMySeekBar.class 3KB
R$attr.class 334B
SeekBarDemoActivity.class 1KB
SeekBarDemoActivity$1.class 1KB
R$id.class 408B
R.class 517B
R$string.class 421B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
classes.dex 6KB
共 30 条
- 1
BAXIA_X
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页