当前位置:  编程技术>移动开发
本页文章导读:
    ▪ProgressBar定做        ProgressBar定制 ProgressBar的基本使用可以参考这个:http://www.eoeandroid.com/thread-1081-1-1.html使用自定义的progressDrawable最终效果:创建一个LayerDrawable:/res/drawable/progress.xml <layer-list xmlns:android="http:/.........
    ▪ 关于Gallery的有关问题。无法改变其尺寸大小        关于Gallery的问题。无法改变其尺寸大小 从网上找到一个Gallery的代码,运行后发现,我无法更改其尺寸。布局xml是这样的<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://sch.........
    ▪ Jfreechart—甘特图下标记当前时间线       Jfreechart—甘特图上标记当前时间线 /********************设置当前时间的标记线***********************/ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); ValueMarker valuemarker = new ValueMarker(.........

[1]ProgressBar定做
    来源: 互联网  发布时间: 2014-02-18
ProgressBar定制
ProgressBar的基本使用
可以参考这个:http://www.eoeandroid.com/thread-1081-1-1.html


使用自定义的progressDrawable
最终效果:

创建一个LayerDrawable:/res/drawable/progress.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 背景图片 -->
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/loading_background" />

    <!-- 进度图片 -->
    <item
        android:id="@android:id/progress">
        <clip>
            <!-- 为了防止bitmap被拉伸,所以没有直接用clip的android:drawable属性-->
            <bitmap
                android:src="/blog_article/@drawable/loading_bar/index.html"
                android:gravity="center" />
        </clip>
    </item>
</layer-list>

接下来在布局文件的ProgressBar中引用该drawable就ok了,/res/layout/test.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ProgressBar
        
        android:layout_width="180dp"
        android:layout_height="40dp"
        android:max="100"
        android:progress="80"
        android:progressDrawable="@drawable/progress" />
</merge>

    
[2] 关于Gallery的有关问题。无法改变其尺寸大小
    来源: 互联网  发布时间: 2014-02-18
关于Gallery的问题。无法改变其尺寸大小
从网上找到一个Gallery的代码,运行后发现,我无法更改其尺寸。
布局xml是这样的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:background="#0000ff">
<com.gallery.GalleryFlow android:id="@+id/Gallery01"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>

当我把android:background改成了蓝色(#0000ff),结果只有一小片区域变成了蓝色,而非整个布局背景变换颜色。先铺出代码,以供参详:

首先是入口Activity代码:
public class ActivityMain extends Activity {
	public void onCreate(Bundle savedInstanceState) {
		System.out.println("ActivityMain");
        super.onCreate(savedInstanceState);
        
        
        setContentView(R.layout.layout_gallery);
        
      /*  Integer[] images = { R.drawable.img0001, R.drawable.img0030,
                R.drawable.img0100, R.drawable.img0130, R.drawable.img0200,
                R.drawable.img0230, R.drawable.img0300, R.drawable.img0330,
                R.drawable.img0354 };*/
        Integer[] images = { R.drawable.ad_up_01, R.drawable.ad_up_02,
                R.drawable.ad_up_03, R.drawable.ad_up_04, R.drawable.ad_up_05 };
        
        ImageAdapter adapter = new ImageAdapter(this, images);
        adapter.createReflectedImages();

        GalleryFlow galleryFlow = (GalleryFlow) findViewById(R.id.Gallery01);
        galleryFlow.setAdapter(adapter);
        
}
}


接着是ImageAdapter。
public class ImageAdapter extends BaseAdapter {

	int mGalleryItemBackground;
	private Context mContext;
	private Integer[] mImageIds;
	private ImageView[] mImages;

	public ImageAdapter(Context c, Integer[] ImageIds) {
		mContext = c;
		mImageIds = ImageIds;
		mImages = new ImageView[mImageIds.length];
	}

	public boolean createReflectedImages() {
		final int reflectionGap = 4;	//倒影间隙
		int index = 0;

		for (int imageId : mImageIds) {
			Bitmap originalImage = BitmapFactory.decodeResource(mContext
					.getResources(), imageId);
			int width = originalImage.getWidth();
			int height = originalImage.getHeight();

			//实现图片的反转,见Android利用Matrix简单处理图片。
			Matrix matrix = new Matrix();
			matrix.preScale(1, -1);
			//创建反转后的图片Bitmap对象,图片高是原图的一半。倒影
			Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
					height / 2, width, height / 3, matrix, false);

			//创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
			Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
					(height + height / 2), Config.ARGB_8888);
			//创建画布对象,将原图画于画布,起点是原点位置。
			Canvas canvas = new Canvas(bitmapWithReflection);
			//canvas.clipRect(0, 10, 400, 300);  
			canvas.drawBitmap(originalImage, 0, 0, null);
			//将反转后的图片画到画布中
			Paint deafaultPaint = new Paint();
			canvas.drawRect(0, height, width, height + reflectionGap,deafaultPaint);
			//创建线性渐变LinearGradient 对象。
			LinearGradient shader = new LinearGradient(0, originalImage
					.getHeight(), 0, bitmapWithReflection.getHeight()
					+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
			
			canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

			Paint paint = new Paint();
			
			paint.setShader(shader);
			
			paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

			canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
					+ reflectionGap, paint);
			

			ImageView imageView = new ImageView(mContext);
			imageView.setImageBitmap(bitmapWithReflection);
			imageView.setLayoutParams(new GalleryFlow.LayoutParams(400, 300));
			//imageView.setLayoutParams(new GalleryFlow.LayoutParams(510, 378));
			imageView.setScaleType(ScaleType.FIT_XY);
			mImages[index++] = imageView;
		}
		return true;
	}

	private Resources getResources() {
		// TODO Auto-generated method stub
		return null;
	}

	public int getCount() {
		//return mImageIds.length;
		return Integer.MAX_VALUE;
	}

	public Object getItem(int position) {
		return position;
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		//return mImages[position];
		 //通过取余来循环取得resIds数组中的图像资源ID
       return mImages[position % mImages.length];
	}

	 /**距离中央距离位移 利用getScale返回View大小*/  
	public float getScale(boolean focused, int offset) {
		return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
	}

}


最后是GalleryFlow
public class GalleryFlow extends Gallery {

	private Camera mCamera = new Camera();
	private int mMaxRotationAngle = 60;
	private int mMaxZoom = -150; //mMaxZoom是图片在Z轴平移的距离,视觉上看上去就是放大缩小的效果
	private int mCoveflowCenter;

	public GalleryFlow(Context context) {
		super(context);
		this.setStaticTransformationsEnabled(true);
	}

	public GalleryFlow(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.setStaticTransformationsEnabled(true);
	}

	public GalleryFlow(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		this.setStaticTransformationsEnabled(true);
	}

	/**
	 * Get the max rotational angle of the image
	 * 
	 * @return the mMaxRotationAngle
	 */
	public int getMaxRotationAngle() {
		return mMaxRotationAngle;
	}

	/**
	 * Set the max rotational angle of each image
	 * 
	 * @param maxRotationAngle
	 *            the mMaxRotationAngle to set
	 */
	public void setMaxRotationAngle(int maxRotationAngle) {
		mMaxRotationAngle = maxRotationAngle;
	}

	/**
	 * Get the Max zoom of the centre image
	 * 
	 * @return the mMaxZoom
	 */
	public int getMaxZoom() {
		return mMaxZoom;
	}

	/**
	 * Set the max zoom of the centre image
	 * 
	 * @param maxZoom
	 *            the mMaxZoom to set
	 */
	public void setMaxZoom(int maxZoom) {
		mMaxZoom = maxZoom;
	}
	
	/**
	 * Get the Centre of the Coverflow
	 * 
	 * @return The centre of this Coverflow.
	 */
	private int getCenterOfCoverflow() {
		return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2 + getPaddingLeft();
	}

	/** 
	 * Get the Centre of the View
	 * 
	 * @return The centre of the given view.
	 */
	private static int getCenterOfView(View view) {
		//return view.getLeft() + view.getWidth() / 2;
		return view.getLeft() + view.getWidth()/2 ;
	}

	protected boolean getChildStaticTransformation(View child, Transformation t) {

		final int childCenter = getCenterOfView(child);
		final int childWidth = child.getWidth();
		int rotationAngle = 0;

		t.clear();
		t.setTransformationType(Transformation.TYPE_MATRIX);

		if (childCenter == mCoveflowCenter) {
			transformImageBitmap((ImageView) child, t, 0);
		} else {
			rotationAngle = (int) (((float) (mCoveflowCenter - childCenter) / childWidth) * mMaxRotationAngle);
			if (Math.abs(rotationAngle) > mMaxRotationAngle) {
				rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle : mMaxRotationAngle;
			}
			transformImageBitmap((ImageView) child, t, rotationAngle);
		}

		return true;
	}

	/**
	 * This is called during layout when the size of this view has changed. If
	 * you were just added to the view hierarchy, you're called with the old
	 * values of 0.
	 * 
	 * @param w
	 *            Current width of this view.
	 * @param h
	 *            Current height of this view.
	 * @param oldw
	 *            Old width of this view.
	 * @param oldh
	 *            Old height of this view.
	 */
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		mCoveflowCenter = getCenterOfCoverflow();
		super.onSizeChanged(w, h, oldw, oldh);
		System.out.println("w, h, oldw, oldh");
		System.out.println(w);
		System.out.println(h);
		System.out.println(oldw);
		System.out.println(oldh);
	}

	/**
	 * Transform the Image Bitmap by the Angle passed
	 * 
	 * @param imageView
	 *            ImageView the ImageView whose bitmap we want to rotate
	 * @param t
	 *            transformation
	 * @param rotationAngle
	 *            the Angle by which to rotate the Bitmap
	 */
	private void transformImageBitmap(ImageView child, Transformation t, int rotationAngle) {
		mCamera.save();
		final Matrix imageMatrix = t.getMatrix();
		final int imageHeight = child.getLayoutParams().height;
		final int imageWidth = child.getLayoutParams().width;
		final int rotation = Math.abs(rotationAngle);

		// 在Z轴上正向移动camera的视角,实际效果为放大图片。
		// 如果在Y轴上移动,则图片上下移动;X轴上对应图片左右移动。
		//mCamera.translate(0.0f, 0.0f, 100.0f);
		mCamera.translate(0.0f, 0.0f, 130.0f);
		// As the angle of the view gets less, zoom in
		if (rotation < mMaxRotationAngle) {
			float zoomAmount = (float) (mMaxZoom + (rotation * 1.5));
			mCamera.translate(0.0f, 0.0f, zoomAmount);
		}
		// 在Y轴上旋转,对应图片竖向向里翻转。
		// 如果在X轴上旋转,则对应图片横向向里翻转。
		//mCamera.rotateY(rotationAngle);
		mCamera.getMatrix(imageMatrix);
		/**
		 * 在做任何变换前,先将整个图像从图像的中心点移动到原点((0,0)点), 执行变换完毕后再将图像从原点移动到之前的中心点。
		 * 如果不加这俩句,任何变换将以图像的原点为变换中心点, 加了之后,任何变换都将以图像的中心点为变换中心点。
		 */
		imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2));
		imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2));
		mCamera.restore();
	}
}

    
[3] Jfreechart—甘特图下标记当前时间线
    来源: 互联网  发布时间: 2014-02-18
Jfreechart—甘特图上标记当前时间线
/********************设置当前时间的标记线***********************/
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();

ValueMarker valuemarker = new ValueMarker(dateFormat.parse(dateFormat.format(date)).getTime());//设置时间线显示在当日的零点
valuemarker.setLabel(dateFormat.format(date));//当前时间显示标签
valuemarker.setLabelOffsetType(LengthAdjustmentType.NO_CHANGE);
valuemarker.setPaint(Color.red);
valuemarker.setStroke(new BasicStroke(1.0F));
valuemarker.setLabelFont(new Font("SansSerif", 0, 11));
valuemarker.setLabelPaint(Color.BLUE);
valuemarker.setLabelAnchor(RectangleAnchor.LEFT);
valuemarker.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT);
valuemarker.setLabelOffset(new RectangleInsets(0, 0, 5, 5));//设置时间标签显示的位置

plot.addRangeMarker(valuemarker);//将当前时间线标记在面板上



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3