当前位置:  编程技术>移动开发
本页文章导读:
    ▪设立界面设计        设置界面设计 如何获得用户名的值呢: // 获得配置参数:用户名  final String userName = PreferenceManager.getDefaultSharedPreferences(    this).getString("user_name", null); AndoridManifest.xml <activity android:name=.........
    ▪ 图片圆角、缩放等成效工具类        图片圆角、缩放等效果工具类 public class ImageUtil { public static InputStream getRequest(String path) throws Exception { URL url = new URL(/blog_article/path/index.html); HttpURLConnection conn = (HttpURLConnection) url.op.........
    ▪ (转)从过程-线程的角度,理解Activity,Service,Broadcast       (转)从进程-线程的角度,理解Activity,Service,Broadcast 写下来仅记录下困惑了很久的问题...先说下我以前的错误理解:Service和Broadcast 这两个东西, 我一直认为这个能够脱离Activity的进程。.........

[1]设立界面设计
    来源: 互联网  发布时间: 2014-02-18
设置界面设计

如何获得用户名的值呢:

// 获得配置参数:用户名
  final String userName = PreferenceManager.getDefaultSharedPreferences(
    this).getString("user_name", null);

 AndoridManifest.xml

<activity android:name=".view.setting.SetView" >
            <intent-filter >
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

 

通过菜单调用:

// 菜单-----------------------

	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(0, 1, 0, "设置").setIcon(android.R.drawable.ic_menu_preferences);
		return super.onCreateOptionsMenu(menu);
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		// 设置
		case 1:
			SetView.launch(this);
			break;

		default:

		}
		return super.onOptionsItemSelected(item);
	}

 设置页面:

package com.lilin.mediaplay.view.setting;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceActivity;

import com.lilin.mediaplay.R;

/**
 * 设置界面
 * 
 * @author lilin
 * @date 2011-12-13 上午12:06:03
 * @ClassName: SettingsActivity
 */
public class SetView extends PreferenceActivity {

	public static void launch(Context c) {
		Intent intent = new Intent(c, SetView.class);
		c.startActivity(intent);
	}

	public void onCreate(Bundle savedInstanceState) {
		// requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preferences);
		setContentView(R.layout.setview);
		setTitle("系统设置");
	}

}

 布局文件:

一个是preferences

<?xml version="1.0" encoding="utf-8"?>
	<!-- 系统设置界面 -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

	<PreferenceCategory android:title="常用设置"
		android:summary="Application settings">
		<!-- 编辑框 -->
		<EditTextPreference 
		    android:key="user_name"
			android:defaultValue="@null" 
			android:title="用户名" 
			android:summary="请设置您的个人用户名" />
		<ListPreference 
			android:key="download_format"
			android:title="下载格式" 
			android:summary="请设置音频下载格式" 
			android:entries="@array/audio_format"
			android:entryValues="@array/audio_format_values" />
			
		<CheckBoxPreference 
			android:key="wifi_only"
			android:defaultValue="false" 
			android:title="WIFI设置" 
			android:summary="只有WIFI模式下才联网" />
		<CheckBoxPreference 
			android:key="roaming_protection"
			android:defaultValue="true" 
			android:title="Roaming Protection"
			android:summary="Disable listening abroad" />

	</PreferenceCategory>

	<PreferenceCategory android:title="其他设置"
		android:summary="Interaction with outside applications">

		<CheckBoxPreference android:key="lastfm_scrobble"
			android:defaultValue="false" 
			android:title="Last.fm Scrobbling"
			android:summary="Requires official last.fm client" />

	</PreferenceCategory>
</PreferenceScreen>

  

一个是布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/setbg_dark"
        android:gravity="center"
        android:minHeight="75dip"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:minHeight="75dip"
            android:orientation="horizontal"
            android:paddingLeft="13dip"
            android:paddingRight="13dip" >

            <ImageView
                android:layout_width="48dip"
                android:layout_height="48dip"
                android:src="/blog_article/@drawable/settings/index.html" >
            </ImageView>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:paddingLeft="13dip" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:singleLine="true"
                    android:text="系统设置"
                    android:textColor="#ffffff"
                    android:textSize="18dip" >
                </TextView>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="#ffffff"
                    android:textSize="12dip" >
                </TextView>

                <TextView
                    android:id="@+id/ItemsCountTextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text=" "
                    android:textColor="#ffffff"
                    android:textSize="12dip" >
                </TextView>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
    </ListView>

</LinearLayout>

 数组参数:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- 音频格式 -->
    <string-array name="audio_format">
        <item>MP3</item>
        <item>OGG</item>
    </string-array>
    <string-array name="audio_format_values">
        <item>mp31</item>
        <item>ogg2</item>
    </string-array>

</resources>

 


    
[2] 图片圆角、缩放等成效工具类
    来源: 互联网  发布时间: 2014-02-18
图片圆角、缩放等效果工具类
public class ImageUtil {

        public static InputStream getRequest(String path) throws Exception {
                URL url = new URL(/blog_article/path/index.html);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                if (conn.getResponseCode() == 200){
                        return conn.getInputStream();
                }
                return null;
        }

        public static byte[] readInputStream(InputStream inStream) throws Exception {
                ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
                byte[] buffer = new byte[4096];
                int len = 0;
                while ((len = inStream.read(buffer)) != -1) {
                        outSteam.write(buffer, 0, len);
                }
                outSteam.close();
                inStream.close();
                return outSteam.toByteArray();
        }
        
        public static Drawable loadImageFromUrl(/blog_article/String url/index.html){
        URL m;
        InputStream i = null;
        try {
            m = new URL(/blog_article/url/index.html);
            i = (InputStream) m.getContent();
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Drawable d = Drawable.createFromStream(i, "src");
        return d;
    }
        
        public static Drawable getDrawableFromUrl(/blog_article/String url/index.html) throws Exception{
                 return Drawable.createFromStream(getRequest(url),null);
        }
        
        public static Bitmap getBitmapFromUrl(/blog_article/String url/index.html) throws Exception{
                byte[] bytes = getBytesFromUrl(url);
                return byteToBitmap(bytes);
        }
        
        public static Bitmap getRoundBitmapFromUrl(/blog_article/String url,int pixels/index.html) throws Exception{
                byte[] bytes = getBytesFromUrl(url);
                Bitmap bitmap = byteToBitmap(bytes);
                return toRoundCorner(bitmap, pixels);
        } 
        
        public static Drawable geRoundDrawableFromUrl(/blog_article/String url,int pixels/index.html) throws Exception{
                byte[] bytes = getBytesFromUrl(url);
                BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);
                return toRoundCorner(bitmapDrawable, pixels);
        } 
        
        public static byte[] getBytesFromUrl(/blog_article/String url/index.html) throws Exception{
                 return readInputStream(getRequest(url));
        }
        
        public static Bitmap byteToBitmap(byte[] byteArray){
                if(byteArray.length!=0){ 
            return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
        } 
        else { 
            return null; 
        }  
        }
        
        public static Drawable byteToDrawable(byte[] byteArray){
                ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);
                return Drawable.createFromStream(ins, null);
        }
        
        public static byte[] Bitmap2Bytes(Bitmap bm){ 
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
                return baos.toByteArray();
        }
        
        public static Bitmap drawableToBitmap(Drawable drawable) {

                Bitmap bitmap = Bitmap
                                .createBitmap(
                                                drawable.getIntrinsicWidth(),
                                                drawable.getIntrinsicHeight(),
                                                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                                                                : Bitmap.Config.RGB_565);
                Canvas canvas = new Canvas(bitmap);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                                drawable.getIntrinsicHeight());
                drawable.draw(canvas);
                return bitmap;
        }
        
                 /**
              * 图片去色,返回灰度图片
              * @param bmpOriginal 传入的图片
             * @return 去色后的图片
             */
            public static Bitmap toGrayscale(Bitmap bmpOriginal) {
                int width, height;
                height = bmpOriginal.getHeight();
                width = bmpOriginal.getWidth();    
        
                Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
                Canvas c = new Canvas(bmpGrayscale);
                Paint paint = new Paint();
                ColorMatrix cm = new ColorMatrix();
                cm.setSaturation(0);
                ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
                paint.setColorFilter(f);
                c.drawBitmap(bmpOriginal, 0, 0, paint);
                return bmpGrayscale;
            }
            
            
            /**
             * 去色同时加圆角
             * @param bmpOriginal 原图
             * @param pixels 圆角弧度
             * @return 修改后的图片
             */
            public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {
                return toRoundCorner(toGrayscale(bmpOriginal), pixels);
            }
            
            /**
             * 把图片变成圆角
             * @param bitmap 需要修改的图片
             * @param pixels 圆角的弧度
             * @return 圆角图片
             */
            public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
        
                Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
                Canvas canvas = new Canvas(output);
        
                final int color = 0xff424242;
                final Paint paint = new Paint();
                final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
                final RectF rectF = new RectF(rect);
                final float roundPx = pixels;
        
                paint.setAntiAlias(true);
                canvas.drawARGB(0, 0, 0, 0);
                paint.setColor(color);
                canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
        
                paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
                canvas.drawBitmap(bitmap, rect, rect, paint);
        
                return output;
            }
        
            
           /**
             * 使圆角功能支持BitampDrawable
             * @param bitmapDrawable 
             * @param pixels 
             * @return
             */
            public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {
                Bitmap bitmap = bitmapDrawable.getBitmap();
                bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));
                return bitmapDrawable;
            }
        
}


时间工具
public class TimeUtil {
        
        public static String converTime(long timestamp){
                long currentSeconds = System.currentTimeMillis()/1000;
                long timeGap = currentSeconds-timestamp;//与现在时间相差秒数
                String timeStr = null;
                if(timeGap>24*60*60){//1天以上
                        timeStr = timeGap/(24*60*60)+"天前";
                }else if(timeGap>60*60){//1小时-24小时
                        timeStr = timeGap/(60*60)+"小时前";
                }else if(timeGap>60){//1分钟-59分钟
                        timeStr = timeGap/60+"分钟前";
                }else{//1秒钟-59秒钟
                        timeStr = "刚刚";
                }
                return timeStr;
        }
        
        public static String getStandardTime(long timestamp){
                SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
                Date date = new Date(timestamp*1000);
                sdf.format(date);
                return sdf.format(date);
        }
}

    
[3] (转)从过程-线程的角度,理解Activity,Service,Broadcast
    来源: 互联网  发布时间: 2014-02-18
(转)从进程-线程的角度,理解Activity,Service,Broadcast
写下来仅记录下困惑了很久的问题...
先说下我以前的错误理解:
Service和Broadcast 这两个东西, 我一直认为这个能够脱离Activity的进程。
因为这两个东西的外部表现就是你离开利当前的进程(直观表现就是你离开当前应用),这两个东西仍然存在在Android的内存中。
我就想当然的认为既然程序都退出了,Service和Broadcast还没有结束,那么这连个东西肯定是依附在系统进程上。
正确的理解是:
Activity,Service,Broadcast这3个东西不仅在同一个进程中,并且还在同一个线程中。
如果有怀疑的话,可以开一个带有Servie的程序,然后用任务管理器杀死这个Service所在的进程,那么你会发现这个Service在相应的被杀死了.

错误的理解归结一下就是看问题的角度有问题。
以前认为是自己的应用程序去控制Android, 其实不然 应该这样理解:你的整个应用程序的生命周期都是Android在帮助你控制。
Activity是Android帮我们创造的,Service和Broadcast也是Android帮我们创造的。
所以当你离开应用程序的时候,你会认为这个程序所在的进程已经被你杀死了(都是被Windows毒害的)。
其实你这个就涉及到Android中Activity的几种状态:
你能够看见的Activity是激活状态,
你看不见的Activity是暂停状态(简单这么认为吧,其实还有别的状态)。

最后总结一下:
不要用应用程序的角度去理解Android, 要用Android的角度去看待应用程序。
不要在Broadcast和Service运行时间较长的任务,容易卡死程序。如果想运行长时间的任务可以再开启一个线程运行。 不要盲目的认为在Service中运行下载任务就卡不死你的程序了。

====================================
一开始的时候我还好奇。。为什么service里面可以直接更新UI。。。成功。。这个解释了一切

    
最新技术文章:
▪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