谷歌电子市场4--专题

1.json

2.按照指定比例展示宽高的自定义控件实现

为了让图片按照完美比例进行展现, 不被压缩, 需要自定义控件,该控件可以根据预设的比例来确定宽高

 * 按照比例展示宽高的自定义控件
 *
 * @author Kevin
 *
 */
public class RatioLayout extends FrameLayout {

    private float ratio;

    public RatioLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public RatioLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        // 加载自定义属性的值
        TypedArray typedArray = context.obtainStyledAttributes(attrs,
                R.styleable.RatioLayout);
        // 根据属性id获取属性值, 方式: R.styleable.名称_属性
        ratio = typedArray.getFloat(R.styleable.RatioLayout_ratio, 0);
        // 回收TypedArray, 释放内存
        typedArray.recycle();
    }

    public RatioLayout(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        int heightMode = MeasureSpec.getMode(heightMeasureSpec);

        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);

        // MeasureSpec.EXACTLY 确定值, 比如把宽高值写死,或者match_parent
        // MeasureSpec.AT_MOST 至多, 能撑多大就多大, 类似wrap_content
        // MeasureSpec.UNSPECIFIED 未指定大小

        if (widthMode == MeasureSpec.EXACTLY
                && heightMode != MeasureSpec.EXACTLY && ratio != 0) {
            // 1. 根据布局宽度推算图片宽度
            int imageWidth = widthSize - getPaddingLeft() - getPaddingRight();
            // 2. 根据图片宽度和宽高比,推算图片高度
            int imageHeight = (int) (imageWidth / ratio);
            // 3. 根据图片高度, 推算布局高度
            heightSize = imageHeight + getPaddingTop() + getPaddingBottom();
            // 4. 根据布局高度, 推算heightMeasureSpec
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize,
                    MeasureSpec.EXACTLY);
        }

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

}

自定义属性

values/attrs.xml

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

    <declare-styleable name="RatioLayout">
        <attr name="ratio" format="float" />
    </declare-styleable>

</resources>

  

  

时间: 2024-12-18 22:06:06

谷歌电子市场4--专题的相关文章

谷歌电子市场6--排行

1.json 2.HotFragment /** * 排行 * * @author Kevin * */ public class HotFragment extends BaseFragment { private ArrayList<String> mList; @Override public View onCreateSuccessView() { int padding = UIUtils.dip2px(10); // 为了使布局可以上下滑动,需要用ScrollView包装起来 Sc

谷歌电子市场8--首页轮播图

1.HomeFragment Override public View onCreateSuccessView() { MyListView view = new MyListView(UIUtils.getContext()); // 添加头布局 HomeHeaderHolder header = new HomeHeaderHolder(); view.addHeaderView(header.getRootView()); // 设置头布局数据 header.setData(mPicLis

谷歌电子市场7--分类

1.对象封装 public class CategoryInfo { public String name1; public String name2; public String name3; public String url1; public String url2; public String url3; public String title; public boolean isTitle;// 表示当前对象是否是标题 } 2.CategoryFragment public class

谷歌电子市场9--详情界面

1.详情页(HomeDetailActivity) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化加载页面 mLoadingPage = new LoadingPage(UIUtils.getContext()) { @Override public View onCreateSuccessView() { return HomeDet

谷歌电子市场2--首页

1.ListView的封装 ①getView的封装 ②加载更多 2.首页 "list": [ { "id": 1525490, "name": "有缘网", "packageName": "com.youyuan.yyhl", "iconUrl": "app/com.youyuan.yyhl/icon.jpg", "stars"

谷歌电子市场5--推荐

1.RecommendFragment  public class RecommendFragment extends BaseFragment { private ArrayList<String> mList; @Override public View onCreateSuccessView() { // 初始化飞入飞出自定义控件 StellarMap stellar = new StellarMap(UIUtils.getContext()); // 设置内部文字距边缘边距为10dip

谷歌电子市场1--BaseFragment

1.BaseFragment 共性 加载中加载失败数据为空加载成功 2.loadData调用

教你解决安卓手机的谷歌服务器被封问题

根据月光博客的报道,从昨天开始 大量中国安卓手机用户反映Android Market 谷歌官方电子市场无法在手机上打开,另外Gmail也无法在手机上打开,另外Google联系人无法同步,还有一些用户甚至出现谷歌地图无法打开的现象. 而在手机上启用VPN后谷歌电子市场就可以正常工作了,因此怀疑是谷歌电子市场被封.想要知道具体的安卓手机应用开发方面的知识可登入e良师益友网哦 今天Google+上也有很多用户反映安卓手机上所有谷歌服务都无法使用的问题.如果安卓手机谷歌服务真被彻底封锁的话,对国内的安卓

历代安卓版本回顾(使用者角度+开发者角度)长期更新!!!

转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6676121.html 序言 Android 用甜点作为它们系统版本的代号的命名方法开始于 Andoird 1.5 发布的时候.作为每个版本代表的甜点按照26个英文字母顺序的原则进行命名:纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢... Build.VERSION_CODESGoogle官网地址 https://developer.android.google.cn/reference/android/o